WPF DataGrid的组合框柱:传播标题组合框整个列
-
19-09-2019 - |
题
嘿!我的问题是:
我有一个数据网格中WPF和我有一个第一列,它是一个DataGridComboBoxColumn。
我想要做的是具有用于该列还与组合框的报头:改变在整个柱传播头
我可以完成这件事在视觉上,但是当我提交的数据,绑定与DataGrid名单不进行新的组合框的值。
<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>
在ComboBox_SelectionChanged我有以下代码:
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到DataGrid;如果更改的第一列在时间寻址的行,即,点击与每行中的组合框的单元格的值,这些值被传播到的DataContext列表中,但是如果我由标题改变第一列的值它没有。
谁能告诉我,我缺少的是什么?我猜这是我影响各行的方式,但我试过的SelectedValue,和的SelectedItem ...的SelectedIndex都无济于事。
预先感谢...
解决方案
我想可能已经解决了它...或者至少变相它...
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.SelectedItem = ((ComboBox)sender).SelectedItem;
}
if (this._results != null)
{
foreach (Device device in _results)
{
device.BIBStatus = (TypeStatus)Enum.ToObject(typeof(TypeStatus), ((ComboBox)sender).SelectedValue);
}
}
我想只改变的datacontext,希望为双向绑定工作,但只有当我专注于每行的组合框一样。所以我想:“为什么不能两者兼得?” 正如你所看到的,我改变每个组合框的selectedItem属性和每个设备的BIB状态(DataContext的部分)两者。这样我得到预期的效果。
不过,我不认为这个解决方案是最好的,我仍然希望有一种方法,我可以做到这一点没有被坏蛋。
任何建议,仍然欢迎!
不隶属于 StackOverflow