WPF DataGridのコンボボックス列:列全体に伝播ヘッダーコンボボックス

StackOverflow https://stackoverflow.com/questions/1195471

質問

ちょっとそこ!ここに私の質問です:

私は、WPFでデータグリッドを持っていると私はDataGridComboBoxColumnある最初の列を持っています。

私は何をしたいことも、コンボボックスとその列のヘッダー持つことです:列全体に伝搬してヘッダーを変更することを

私はこれは、視覚的に成し遂げることができますが、私がデータを送信する際に、データグリッドにバインドされているリストは、新しいコンボボックスの値を運ぶことはありません。

<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あるリストを提出します。私は一度に行をアドレス指定する最初の列の値を変更した場合、各行のコンボボックスでセルをクリックする、すなわち、値がIヘッダによって最初の列の値を変更した場合しかし、の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