Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 获取TabItem'的实例;内容模板_C#_Wpf_Xaml - Fatal编程技术网

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;