Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据模板中的访问控制_C#_Wpf_Xaml - Fatal编程技术网

C# 数据模板中的访问控制

C# 数据模板中的访问控制,c#,wpf,xaml,C#,Wpf,Xaml,相关:上一个问题 我有以下xaml: <Expander Name="SharesExpander" Template="{StaticResource SimpleExpanderTemp}" Header="Shares"> <ItemsControl Name="SharesControl" ItemsSource="{Binding Sharers}"> <ItemsControl.ItemTemplate>

相关:上一个问题

我有以下xaml:

<Expander Name="SharesExpander" Template="{StaticResource SimpleExpanderTemp}" Header="Shares">
    <ItemsControl Name="SharesControl" ItemsSource="{Binding Sharers}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Expander Name="ShareExpander" Template="{StaticResource SimpleExpanderTemp}" Header="{Binding Name}">
                    <local:FileTypesListBoxControl Margin="25,-10,-10,-10" BorderThickness="10" />
                </Expander>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Expander>
另一次尝试:

ControlTemplate controlTemplate = SharesControl.Template;
var control = controlTemplate.FindName("ShareExpander", ?whatGoesHere);
再一次:

for (int i = 0; i < 1; i++)
{
    //test again always null
    var test = ContactSharesItemsControl.ItemContainerGenerator.ContainerFromIndex(i) as Expander;
}
for(int i=0;i<1;i++)
{
//再次测试总是空的
var测试=ContactSharesItemsControl.ItemContainerGenerator.ContainerFromIndex(i)作为扩展器;
}

内部扩展器有一个名称-
ShareExpander
。你不能直接引用它吗?不。据我所知,数据模板中的控件不能直接访问。我总是认为模板像饼干切割器。你不能仅仅从饼干切割器上找到饼干,但是你可以用它们来制作你能找到(吃)的真正的饼干。但是不管怎样,你需要从实际的内部扩展器中得到什么呢?您可以使用
ItemContainerGenerator
查找从DataTemplate生成的UI项,但是如果您可以以不同方式连接应用程序,这样就不需要这样做,那就更好了。我需要内部扩展器,以便添加单击处理程序。到目前为止,我尝试使用
ItemContainerGenerator
失败得很惨。到目前为止,我唯一能够检索到的是与itemsControl生成的控件相关联的视图模型。我完全无法获得实际控制本身的参考
for (int i = 0; i < 1; i++)
{
    //test again always null
    var test = ContactSharesItemsControl.ItemContainerGenerator.ContainerFromIndex(i) as Expander;
}