DataGridComboBoxColumn теряет свое содержимое при изменении выбора - PullRequest
6 голосов
/ 21 июня 2010

Когда я щелкаю ячейку в моей колонке DataGridComboBoxColumn, ComboBox становится видимым, и я могу выбирать элементы.Когда я выбрал предмет, он виден сверху, и это нормально.Но когда ячейка, называемая ComboBox, теряет фокус, потому что я щелкаю по чему-то другому в DataGrid, тогда в ячейке, которую я выбрал, больше нет видимого элемента / текста.

Как сохранить этот выбор /выделенный текст?

вот мой код:

<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 aka SchoolclassCodes является свойством типа ObservableCollection | Schoolclass |

Кто-то знает, как исправить мою привязку?

1 Ответ

1 голос
/ 28 августа 2015

Я знаю, что это, вероятно, больше не нужно, но, возможно, это поможет кому-то еще.Не нужно ли вашему ComboBox обновлять привязку при ее изменении?например,

SelectedValueBinding="{Binding SchoolclassCodeMonday}"

будет:

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

Также убедитесь, что вы запускаете уведомление при изменении свойства из кода в вашей наблюдаемой коллекции.

...