powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Биндинг к DataContext в итеме DataGrid, где определен ItemsSource
3 сообщений из 3, страница 1 из 1
Биндинг к DataContext в итеме DataGrid, где определен ItemsSource
    #38832218
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажется, глупый вопрос, но все же я не сведущ...

К примеру, есть такая разметка:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<Window.DataContext>
	<Binding Path="Directory" Source="{StaticResource Locator}"/>
</Window.DataContext>
....
<DataGrid ItemsSource={Binding Workers}>
        <DataGridTextColumn Header="Имя" Binding="{Binding Name}"/>
        <DataGridTemplateColumn Header="В избранное">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <!--Вот тут второй биндинг не работает-->
                        <CheckBox IsChecked="{Binding InFavorites}" Command="{Binding SomeCommand}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
.....
</DataGrid>


Dyrectory представляет собой класс ViewModel, в котором Workers - набор данных, SomeCommand - некая команда, тоже определенная в Directory.
Биндинг команды не работает, так как биндинг ищет SomeCommand в экземпляре из Workers, а не в Directory.
Явно прописать источник для команды тоже не выходит:
Код: xml
1.
Command="{Binding Directory.SomeCommand, Source={StaticResource Locator}}"


Не может найти ресурс Locator, который объявлен в App.xaml. (Кстати, DataGrid находится в словаре ресурсов, а не явно в окне, если че...)

Как решить проблему?
...
Рейтинг: 0 / 0
Биндинг к DataContext в итеме DataGrid, где определен ItemsSource
    #38832258
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто:
Код: xml
1.
Command="{Binding DataContext.SomeCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}"
...
Рейтинг: 0 / 0
Биндинг к DataContext в итеме DataGrid, где определен ItemsSource
    #38832826
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,

лично я в таких случаях использую RoutedCommand, так как RoutedCommand работает на Bubble RoutedEvent, то команды всплывает до нужного мне уровня с параметрами, где я могу её обработать либо через CommandBindings, либо через самописный класс CommandListener, который связывает маршрутизируемыми командами с RelayCommand'ами в моей модели представления, при этом можно контролировать всплывать команде дальше или нет.
В списках, гридах и прочих контролах где используются шаблоны данных (по мне) такой способ наиболее удобен. Удобен он еще и тем, что вызов команды можно сделать из любого места в визуальном дереве, главное, чтоб слушатель этих команд находился в корневой ветке этого дерева.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Биндинг к DataContext в итеме DataGrid, где определен ItemsSource
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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