0

テーブル (SQL Server の WareTable) があります。

フォームで datagridview(=dgv) を使用する必要があります。

私の dgv では、最初の列は ComboBox (WareName) です。

ComboBox で値を選択すると、次の列 (sellPrice) が自動的に入力されます。

どうすればできますか?

4

1 に答える 1

0

マルチバインディングは役に立ちますか? データ グリッド ビューの各行にビューモデルがある場合、列 1 の値を選択すると、ビューモデルにプロパティが設定されます。列 1 からプロパティにバインドし、必要なその他のデータをバインドし、列 2 に正しい値を表示するマルチバインディングと値コンバーターをセットアップできます。

<DataGridTextColumn 
  Header="Ticket Qty" 
  Width="Auto" 
  IsReadOnly="True" >
  <DataGridTextColumn.Binding>
    <MultiBinding Converter="{StaticResource unitConverter}">
      <Binding Path="Column1ViewModelProperty"/>
      <Binding Path="Column2ViewModelProperty" />
      <Binding Path="AdditionalViewModelProperty"/>
    </MultiBinding>
  </DataGridTextColumn.Binding>
</DataGridTextColumn>

http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.converter.aspx

または、Column1ViewModelProperty に変更を加えて、実際のビュー モデル クラスで Column2ViewModelProperty を更新することもできます (Column1ViewModelProperty のセッターでイベントを発生させるか、Column2ViewModelProperty を更新するメソッドを呼び出します)。

<DataGridTextColumn Binding="{Binding Column1ViewModelProperty }"/>

//Code behind
public string Column1ViewModelProperty {
  get{
    return _column1ViewModelProperty;
  }
  set{
    _column1ViewModelProperty = value;
    Column2ViewMOdelProperty = calculatedValue;
    OnPropertyChanged("Column1ViewModelProperty");
  }
}

public string Column2ViewModelProperty {
  get{
    return _column2ViewModelProperty;
  }
  set{
    _column2ViewModelProperty = value;
    OnPropertyChanged("Column2ViewModelProperty");
  }
}
于 2013-06-07T21:27:31.973 に答える