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