C# 获取TabItem'的实例;内容模板
我有一个C# 获取TabItem'的实例;内容模板,c#,wpf,xaml,C#,Wpf,Xaml,我有一个TabControl绑定到一个项目集合,其中每个项目都应该由一个普通的TabItem表示,它承载一个用户控件,如下所示: <TabControl x:Name="Items" ItemsSource="{Binding ElementName=This,Path=Files}"> <TabControl.ItemContainerStyle> <Style TargetType="{x:Type TabItem
TabControl
绑定到一个项目集合,其中每个项目都应该由一个普通的TabItem
表示,它承载一个用户控件,如下所示:
<TabControl x:Name="Items"
ItemsSource="{Binding ElementName=This,Path=Files}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="{Binding Path=Name}" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate DataType="{x:Type App:MyContext}">
<App:Task x:Name="task" Image="{Binding Path=Image}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
但是container.Content
是MyContext
而不是Task
。所以我想我应该使用:
var task = container.ContentTemplate.FindName("task") as Task;
但这会引发一个异常,因为此时,ContentTemplate
似乎尚未应用。我如何强制它或以任何其他方式获得我想要的?首先为什么需要UserControl
如果您需要访问某些内容,您没有将项目上的足够属性绑定到UserControls。您有道理,我通过尝试不同的方法找到了解决问题的方法。不过我还是想听听解决方案,如果有的话。@wpwannabe:您可能需要先选择它,然后等待感谢!因此,如果我想循环所有项目(如我在示例中所示),我别无选择,只能重复这一点?如果您使用容器(这几乎不是一个好主意),不要认为有办法解决这一问题。
var task = container.ContentTemplate.FindName("task") as Task;