0

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

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

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

提前致谢 :)

4

2 回答 2

1

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

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

于 2013-05-01T02:20:36.470 回答
0

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

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

不过,显然您必须创建一个 DataTemplateSelector,而不是创建一个 ValidationRule。

于 2013-04-30T08:00:23.827 回答