如何提供DataTemplateSelector运行时资源?WPF XAML

本文关键字:WPF XAML 资源 运行时 何提供 DataTemplateSelector | 更新日期: 2023-09-27 18:11:33

当DataTemplateSelector在XAML控件的资源(如下所示)中声明时,如何将其提供/绑定到不是ItemsSource成员的运行时值?例如,它可能需要一个服务、数据源、配置参数等。c

例子:裁判。"如何从数据上下文或后台代码中提供这一点??"

<UserControl.Resources>
    <DataTemplate x:Key="StringDataTemplate">
            <TextBox Grid.Column="2" Text="{Binding Value}" />
    </DataTemplate>
    <DataTemplate x:Key="DateDataTemplate">
            <DatePicker Grid.Column="2" SelectedDate="{Binding Value}" />
    </DataTemplate>
    <local:MyDataTemplateSelector x:Key="templateSelector" 
          SomeRuntimeValue="How Can This Be Supplied From The Data Context or Backing Code???"
          StringDataTemplate="{StaticResource StringDataTemplate}"
          BooleanDataTemplate="{StaticResource BooleanDataTemplate}"/>
</UserControl.Resources>
<StackPanel>
    <ListBox ItemsSource="{Binding SomeDataCollection}"      
             Grid.IsSharedSizeScope="True" 
             HorizontalContentAlignment="Stretch"
             ItemTemplateSelector="{StaticResource templateSelector}"/>
</StackPanel>

提前感谢:)

如何提供DataTemplateSelector运行时资源?WPF XAML

我已经有效地使用了下面的解决方案,但是我不能确定这是最好的解决方案还是其他的一个hbarck已经发布。

将数据传递给数据模板选择器

您可以按照以下答案进行操作:绑定非uielement

问题基本上是在其他问题相同:如何使用数据绑定的对象不是一个DependencyObject或不能继承数据上下文,因为它是外部的可视化树?

与创建ValidationRule不同,显然您必须创建DataTemplateSelector