Связывание IsChecked ComboBox не работает в шаблоне данных - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть ComboBox с текстовым блоком и установленным флажком, чтобы я мог установить логическое свойство модели представления на основе флажка.

Код представления

<ComboBox HorizontalAlignment="Left" IsEditable="True" IsReadOnly="True" Text="-- Filter Columns --">
   <ComboBoxItem>
      <ComboBoxItem.ContentTemplate>
         <DataTemplate>
            <StackPanel Orientation="Horizontal">
               <TextBlock Text="Description"/>
               <CheckBox IsChecked="{Binding DescriptionHeaderVisibility}"/>
            </StackPanel>
         </DataTemplate>
      </ComboBoxItem.ContentTemplate>
   </ComboBoxItem>
</ComboBox>

Просмотр свойства модели

 public bool DescriptionHeaderVisibility
 {
     get => _descriptionHeaderVisibility;
     set => Set(ref _descriptionHeaderVisibility, value);
 }

Полезная информация

  • Я использую MVVM Light
  • Если ясделать точно такой же флажок привязки где-нибудь еще на странице, он работает и уведомляет мою модель представления об изменении.
  • Привязка не работает только в шаблонном поле со списком

IЯ не уверен, почему привязка не работает в шаблоне поля со списком?Я просто что-то упускаю здесь, о чем я не знаю?Если я могу заставить эту привязку работать должным образом, план состоит в том, чтобы добавить еще несколько строк текстовых блоков и флажков, привязанных к различным логическим свойствам в моей модели представления.

Изображение раскрывающегося списка

enter image description here

1 Ответ

0 голосов
/ 04 декабря 2018

Проблема в том, что вы используете ContentTemplate, но вы не даете ему никакого контента для отображения.Если вы просто хотите использовать окружающий DataContext, вы можете написать

<ComboBoxItem Content="{Binding .}">

Inspired by этот ответ на аналогичный вопрос.

...