ねえ、そこに!ここで私の質問です:WPF DataGridコンボボックス列:ヘッダーコンボボックスを列全体に伝播
私はWPFでDatagridを持って、私はDataGridComboBoxColumnである最初の列を持っています。
私がしたいのは、その列のヘッダーにもコンボボックスを付けることです。列全体に伝播してヘッダーを変更します。
私はこれを視覚的に行うことができますが、データを送信すると、データグリッドにバインドされているリストには新しいコンボボックスの値は反映されません。私は次のコードを持っているComboBox_SelectionChangedで
<dg:DataGridComboBoxColumn SelectedItemBinding="{Binding BIBStatus}"
ItemsSource="{Binding Source={StaticResource typeStatus}}"
Width="0.20*">
<dg:DataGridComboBoxColumn.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="Built-In Bridge"/>
<ComboBox SelectedItem="{Binding BIBStatus}"
SelectionChanged="ComboBox_SelectionChanged"
ItemsSource="{Binding Source={StaticResource typeStatus}}"/>
</StackPanel>
</DataTemplate>
</dg:DataGridComboBoxColumn.HeaderTemplate>
</dg:DataGridComboBoxColumn>
:
DataGridColumn comboCol = this.gridResults.Columns[0];
for (int i = 0; i < this.gridResults.Items.Count; i++)
{
ComboBox myCmBox = (comboCol.GetCellContent(this.gridResults.Items[i]) as ComboBox);
myCmBox.SelectedValue = ((ComboBox)sender).SelectedValue;
}
私はデータを送信すると、私はデータグリッドへのDataContextあるリストを提出します。一度に行をアドレス指定する最初の列の値を変更した場合、つまり各行のコンボボックスでセルをクリックすると、値はDataContextのリストに伝播されますが、最初の列の値をヘッダーで変更するとそれはしません。
誰かが私に行方不明を教えてもらえますか?私はそれが私は各行に影響する方法だと思いますが、私はSelectedValue、SelectedItemとSelectedIndexを試してみました...すべて無駄に。
事前のおかげで...
双方向データバインディングを行っているので、データソースを変更すると、コンボボックスの選択項目が変更されます。 BIBStatusを直接設定するとどうなりますか? –
私はそれについて考えました:)しかし、問題は、編集するためにクリックすると各行のコンボボックスが更新されるだけです。そうでなければ各行は同じままです。 各行のコンボボックスでSelectionChangedイベントをトリガーすることが問題であると推測しています。各行の値を選択するとデータバインディングが機能するためです。コード内のコンボボックスの値を編集すると、そのSelectionChangedイベントはUIで発生しないため、トリガされません...推測しますか? – LostKaleb