当在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>
提前致谢:)
答案 0 :(得分:1)
我已经有效地使用了以下解决方案,但我无法确定这是最佳解决方案还是hbarck发布的其他解决方案。
答案 1 :(得分:0)
您可以按照以下答案中所示执行此操作:Binding on a Non-UIElement
问题基本上与另一个问题相同:如何在不是DependencyObject的对象上使用DataBinding,或者因为它在可视树之外而不能继承DataContext?
不过要创建一个ValidationRule,显然你不得不创建一个DataTemplateSelector。