0

DataTemplateSelector が XAML コントロールのリソースで (以下のように) 宣言されている場合、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

この回答に示すようにそれを行うことができます:非UIElementへのバインディング

問題は基本的に他の質問と同じです: DependencyObject ではないオブジェクトで DataBinding を使用する方法、またはビジュアル ツリーの外部にあるために DataContext を継承できないオブジェクトで、どのように DataBinding を使用できますか?

ただし、ValidationRule を作成する代わりに、明らかに DataTemplateSelector を作成する必要があります。

于 2013-04-30T08:00:23.827 に答える