嘿!我的问题是:

我有一个数据网格中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的部分)两者。这样我得到预期的效果。

不过,我不认为这个解决方案是最好的,我仍然希望有一种方法,我可以做到这一点没有被坏蛋。

任何建议,仍然欢迎!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top