7

DataGridComboBoxColumnのセルをクリックすると、ComboBoxが表示され、アイテムを選択できます。アイテムを選択すると、上部に表示されます。しかし、DataGridで別のセルをクリックしたために、セル(別名ComboBox)がフォーカスを失うと、以前に選択したセルにアイテム/テキストが表示されなくなります。

その選択/選択したテキストを保持するにはどうすればよいですか?

それが私のコードです:

<DataGridComboBoxColumn
           Width="*"
           Header="Monday"
           DisplayMemberPath="SchoolclassName"
           SelectedValueBinding="{Binding SchoolclassCodeMonday}"  
           ItemsSource="{Binding Source={StaticResource ClassCodes}}">

    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
            <Setter Property="ItemsSource" 
                    Value="{Binding Source={StaticResource ClassCodes}}" />
        </Style>
    </DataGridComboBoxColumn.ElementStyle>

    <DataGridComboBoxColumn.EditingElementStyle>                   
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" 
                    Value="{Binding Source={StaticResource ClassCodes}}" />
            <Setter Property="IsDropDownOpen" Value="True" />
        </Style>                   
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

私の問題には解決策があるようです:http ://wpf.codeplex.com/Thread/View.aspx?ThreadId = 46627 (一番下までスクロール)が、解決策を問題に転送できません。モデルの設定がかなり違うからです。

SchoolclassNameはSchoolclass.csの文字列プロパティです SchoolclassCodeMondayはTimeTable.csの文字列プロパティです ClassCodes別名SchoolclassCodesはタイプObservableCollection|Schoolclass|のプロパティです

誰かが私のバインディングを修正する方法を知っていますか?

4

1 に答える 1

2

おそらくもう必要ないことはわかっていますが、他の誰かを助けるかもしれません。ComboBox は、バインディングが変更されたときにバインディングを更新する必要はありませんか? 例えば

SelectedValueBinding="{Binding SchoolclassCodeMonday}"

だろう:

SelectedValueBinding="{Binding SchoolclassCodeMonday, 
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  

また、オブザーバブル コレクションのコードからプロパティが変更されたときに通知を送信していることを確認してください。

于 2015-08-28T15:56:09.217 に答える