2010-11-19 11 views
0

2つのプロパティを持つリストにバインドされたDataGridがあります。DataGridの2つの列間のバインド

DataGridの最初の列はDataGridTemplateColumnで、内部にはComboBoxがあります。

DataGridの第2列はDataGridTextColumnであり、コンバータとバインドされています。

最初の列のコンボボックス値を変更するたびに、2番目の列コンバーターをトリガーする必要があります。したがって、コンバータのいくつかの計算に基づいて私は2番目の列に値を返すことができます

これを行う方法?

答えて

0

バインドされたソースを介してルーティングし、選択したコンボボックスの項目をバインドされたデータにバインドし、選択したオブジェクトをコンバーターを使用して列2にバインドすることができます。選択した項目を2つの列で共有し、2番目の列ではバインディングでコンバータを使用するため、トリガされます。

を結合列2の

修正しコピーペースト・エラー、

このような何か、

Presenter/ViewModel 
class DataSource : INotifyPropertyChanged { 
    // raise PropertyChanged when required 
    public ObservableCollection<string> Columns1Values {get;set;} 
    // raise PropertyChanged when required 
    public string SelectedColumn1Value {get; set;} 
} 

ビュー

<dg:DataGrid 
    Name="sampleDG" 
    ItemsSource={Binding DataSourceObject}> 
    <dg:DataGridWidget.Columns> 
     <dg:DataGridTemplateColumn 
      Header="Column 1"> 
      <datagrid:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Label Content="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"/> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellTemplate> 
      <datagrid:DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <ComboBox 
         ItemsSource="{Binding Path=Column1, Mode=TwoWay}" 
         SelectedItem="{Binding Path=SelectedColumn1Value, Mode=TwoWay}" 
        /> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellEditingTemplate> 
     </dg:DataGridTemplateColumn> 
     <dg:DataGridTextColumn 
      Header="Column 2" 
      Binding="{Binding Path=SelectedColumn1Value, Converter={StaticResource selectedConverter}, Mode=TwoWay}}"> 
     </dg:DataGridTextColumn> 
    </dg:DataGridWidget.Columns> 
</dg:DataGrid> 
+0

しかし、あなたはコンボボックスを変更すると、コンバータは毎回トリガを取得する方法? DataGridTextColumnのバインディングパス "列"とは何ですか? – ksvimal

+0

申し訳ありませんが私の間違い(コピーの貼り付けエラー)、Column 2はSelectedColumn1Valueにバインドする必要があります。これはColumn間で共有する必要があるメンバーであり、Column1バインディングがそれを更新するときに、 。列2の場合、列2の選択肢を列1に変更するつもりがない場合は、結合モードをOneWayにすることができます。 – whoisthis

+0

これは役に立ちましたか? – whoisthis

関連する問題