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

时间:2013-04-30 07:40:40

标签: c# wpf xaml wpf-controls

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

示例:ref。 “如何从数据上下文或支持代码中提供”

<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>

提前致谢:)

2 个答案:

答案 0 :(得分:1)

我已经有效地使用了以下解决方案,但我无法确定这是最佳解决方案还是hbarck发布的其他解决方案。

Pass Data to Data Template Selector

答案 1 :(得分:0)

您可以按照以下答案中所示执行此操作:Binding on a Non-UIElement

问题基本上与另一个问题相同:如何在不是DependencyObject的对象上使用DataBinding,或者因为它在可视树之外而不能继承DataContext?

不过要创建一个ValidationRule,显然你不得不创建一个DataTemplateSelector。

相关问题