0

アイテム テンプレートを使用して、グリッドの行を表示する方法を定義します。グリッド定義 (簡略化) は、アイテム テンプレート ソースがGridRows(行のコレクション) であることを示しています。

<grid ...>
   (...)
   <ScrollViewer 
          ItemTemplate="{StaticResource GridRowItemDataTemplate}" 
          ItemsSource="{Binding GridRows}" />
   </ScrollViewer>
</grid>

ここまでは順調ですね。

item テンプレートでは、テキスト ボックスは にバインドさImportZoneNameれ、もちろん に解決されGridRows[i].ImportZoneNameます。これはまさに私が望むものです:

<DataTemplate x:Key="GridRowItemDataTemplate">
   <Grid>
      <TextBlock {Binding ImportZoneName}" />
      <ComboBox 
           SelectedItem="{Binding SelectedModelingTypeValue}" 
           ItemsSource="{Binding ModelingTypes}" />
   </Grid>
</DataTemplate>

ModelingTypes今問題:ビュー モデルの他のプロパティ () にコンボ ボックスをバインドしたい。このプロパティは、GridRows にはまったくリンクされていません。項目テンプレート ソースをオーバーライド (または無視) するように WPF に指示するにはどうすればよいですか?

大変感謝します !

ところで、私はこれらの単純な拘束ケースの簡単なガイドをまだ見つけていません...誰かがそのようなガイドへのリンクを持っているなら、私は彼/彼女を永遠に祝福します:)

4

1 に答える 1

2

DataContext次のように親リストを取得できます。

<DataTemplate x:Key="GridRowItemDataTemplate">
   <Grid>
      <TextBlock {Binding ImportZoneName}" />
      <ComboBox 
           SelectedItem="{Binding SelectedModelingTypeValue}" 
           ItemsSource="{Binding DataContext.ModelingTypes, 
                           RelativeSource={RelativeSource FindAncestor,
                           AncestorType=Grid}}" />
   </Grid>
</DataTemplate>

プロパティがあるGrid限り、使用しているグリッドのタイプに置き換えます(どちらであるかは不明で、質問からは明らかではありません)DataContextModelingTypes

于 2013-06-14T13:03:02.087 に答える