Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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# TemplateSelector中的数据绑定_C#_Wpf_Data Binding_Datatemplateselector - Fatal编程技术网

C# TemplateSelector中的数据绑定

C# TemplateSelector中的数据绑定,c#,wpf,data-binding,datatemplateselector,C#,Wpf,Data Binding,Datatemplateselector,我使用一些数据模板来显示不同的值,这些数据模板由DataTemplateSelector选择。每个控件都有一些到自定义对象的数据绑定。对象是ObservableCollection的一部分,然后DTS为它们选择模板。问题是:当我尝试使用一些预定义对象(在代码中)运行我的应用程序时,所选控件没有值。例: <!--Date Template--> <DataTemplate x:Key="DateTemplate"> <WrapPanel x

我使用一些数据模板来显示不同的值,这些数据模板由DataTemplateSelector选择。每个控件都有一些到自定义对象的数据绑定。对象是ObservableCollection的一部分,然后DTS为它们选择模板。问题是:当我尝试使用一些预定义对象(在代码中)运行我的应用程序时,所选控件没有值。例:

  <!--Date Template-->
    <DataTemplate x:Key="DateTemplate">
        <WrapPanel x:Name="DateTemplate_Panel">
            <WrapPanel.DataContext>
                <params:FTParams />
            </WrapPanel.DataContext>
            <Label x:Name="DateTemplate_Label" Content="{Binding Path=Name}" />
            <DatePicker x:Name="DateTemplate_DatePicker" SelectedDate="{Binding Path=SelectedValue}" SelectedDateFormat="Long" />
        </WrapPanel>
    </DataTemplate>
我在DataPicker中选择一个日期,然后正确加载内容。但我真的需要在启动时加载这些值。
你能给我一些建议吗?

数据模板不应该嵌入数据。您肯定不想从DT中实例化FTParams的实例。当数据位于树中的其他位置时,DataTemplate的DataContext属性是隐式设置的

我假设您有某种ItemsControl,但为了简单起见,让下面的示例有一个内容控件:

<ContentControl ContentTemplate="{StaticResource DateTemplate}">
    <params:FTParams />
</contentControl>

如果您的所有项目都在ItemsControl中(ItemsSource绑定到ObservableCollection),那么您应该设置ItemsTemplate而不是ContentTemplate,或者如果您想使用模板选择器,则设置ItemTemplateSelector

<ItemsControl ItemsSource="{Binding PathToTheObsCollectionProperty}"
    ItemTemplateSelector="{StaticResource MySelector}" />

在所有情况下,DT都不应该显式设置DataContext属性


然后让您的数据模板不带DataContext元素。

您能提供一个在ObservableCollection中绑定的类的示例吗?我已经从模板中删除了DataContext,它工作正常。谢谢你的回答。
<ItemsControl ItemsSource="{Binding PathToTheObsCollectionProperty}"
    ItemTemplateSelector="{StaticResource MySelector}" />