Привязка снята с флажка в списке wpf при выделении изменений в выпадающем списке - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть выпадающий список клиентов, и этот клиент может быть в более чем 1 категориях, поэтому я использовал список, который содержит флажки всех категорий ...

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

вот мой файл .dbml

enter image description here

Вот мой код xaml списка ...

  <ListBox Height="113.88" Margin="399.342,125.543,424.66,0" Name="lst_category" VerticalAlignment="Top" SelectedValuePath="CategoryID">
            <ListBox.ItemTemplate>
                <HierarchicalDataTemplate>
                <CheckBox Content="{Binding CategoryName}"/>
            </HierarchicalDataTemplate></ListBox.ItemTemplate>
        </ListBox>

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

1 Ответ

2 голосов
/ 25 апреля 2011

Решение 1: Создайте класс CategoryViewModel следующим образом:

class CategoryViewModel : INotifyPropertyChanged
{
   public Category Category {get ... set ...}
   public bool IsChecked {get ... set ...} //true if Category belongs to currently selected contact
}

Свяжите свой пользовательский интерфейс с классом ViewModel, который содержит список CategoryViewModel, который вычисляется при каждом изменении выбранного контакта.

В основном:

class ViewModel : INotifyPropertyChanged
{
   public Contact SelectedContact { get .... set ....}

   //list of all possible categories (the ones belonging to SelectedContact will have IsChecked true
   public ObservableCollection<CategoryViewModel> Categories 
   {
       get .... set ....
   }   
}

Свяжите свой список выше со свойством ViewModel.Categories.

SelectedContact должен быть привязан к текущему выбранному контакту. Когда он изменяется, в установщике вы воссоздаете список категорий.

Решение 2. Используйте некоторые конвертеры (не рекомендую, потому что это не MVVM)

...