powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Пример привязки ListBox из MSDN
5 сообщений из 5, страница 1 из 1
Пример привязки ListBox из MSDN
    #39742042
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот здесь показан пример привязки трёх ListBox https://docs.microsoft.com/ru-ru/dotnet/framework/wpf/data/how-to-use-the-master-detail-pattern-with-hierarchical-data#example
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  Width="400" Height="180"
  Title="Master-Detail Binding" 
  Background="Silver">
  <Window.Resources>
    <src:LeagueList x:Key="MyList"/>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<DockPanel DataContext="{Binding Source={StaticResource MyList}}">
    <StackPanel>
      <Label>My Soccer Leagues</Label>
      <ListBox ItemsSource="{Binding}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Name}"/>
      <ListBox ItemsSource="{Binding Path=Divisions}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Divisions/Name}"/>
      <ListBox DisplayMemberPath="Name" ItemsSource="{Binding Path=Divisions/Teams}"/>
    </StackPanel>
  </DockPanel>
</Window>

К сожалению, в примере нет больше ни чего.
Мне не понятно как они отслеживают в зависимых ListBox изменения выделенного и текущего элемента в предыдущем. Ведь привязки к SelectedItem или CurrentItem нигде не указано.
...
Рейтинг: 0 / 0
Пример привязки ListBox из MSDN
    #39742063
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IsSynchronizedWithCurrentItem="true"

Синхронизация происходит через представление коллекции, у неё есть свойство CurrentItem (элемент который выбран в данный момент в ListBox)
Вы можете получить представление по умолчанию с помощью метода CollectionViewSource.GetDefaultView(object).
В качестве аргумента нужно передавать коллекцию, которые вы биндите к ItemsSource
Получите ICollectionView тип, в нём и будет свойство и события, связанные с изменением CurrentItem.
Так как дефолтное представление может быть для 2 элементов управления общим, имеет смысл создать свое (ListCollectionView) и забиндить его к ItemsSource свойству у ListBox. Тогда будет использованно именно оно.
Вся остальная логика по обновлению элементов в связанных списках перекладывается на модель представления через событие:

event CurrentChangingEventHandler CurrentChanging;

Удачи :)
...
Рейтинг: 0 / 0
Пример привязки ListBox из MSDN
    #39742075
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
IList sourceList = new List<string>();
// Вариант 1
ICollectionView viewList1 = new ListCollectionView(sourceList);
viewList1.CurrentChanged += (s, e) => { /* Тут вы реализуете логику загрзуки связанные элементов */ };
viewList1.CurrentChanging += (s, e) => { /* Тут вы реализуете логику отмены выбора текущего элемента */ };
// Вариант 2
ICollectionView viewList2 = CollectionViewSource.GetDefaultView(sourceList);
viewList2.CurrentChanged += (s, e) => { /* Тут вы реализуете логику загрзуки связанные элементов */ };
viewList2.CurrentChanging += (s, e) => { /* Тут вы реализуете логику отмены выбора текущего элемента */ };
...
Рейтинг: 0 / 0
Пример привязки ListBox из MSDN
    #39742079
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman MejtesIsSynchronizedWithCurrentItem="true"

Синхронизация происходит через представление коллекции, у неё есть свойство CurrentItem (элемент который выбран в данный момент в ListBox)
Вы можете получить представление по умолчанию с помощью метода CollectionViewSource.GetDefaultView(object).
В качестве аргумента нужно передавать коллекцию, которые вы биндите к ItemsSource
Получите ICollectionView тип, в нём и будет свойство и события, связанные с изменением CurrentItem.
Так как дефолтное представление может быть для 2 элементов управления общим, имеет смысл создать свое (ListCollectionView) и забиндить его к ItemsSource свойству у ListBox. Тогда будет использованно именно оно.
Вся остальная логика по обновлению элементов в связанных списках перекладывается на модель представления через событие:

event CurrentChangingEventHandler CurrentChanging;

Удачи :)Спасибо!
...
Рейтинг: 0 / 0
Пример привязки ListBox из MSDN
    #39742263
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,
в чем смысл работать именно с ICollectionView, когда можно прибиндить свойство SelectedItem от ListBox и в setter'е отслеживать его изменения, фильтруя соответственно значения других листбоксов?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Пример привязки ListBox из MSDN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]