Имеется грид, который берет данные из CollectionViewSource:
ItemsSource="{Binding Source={StaticResource someViewSource}}
При это необходимо для каждой колонки сичтать дополнительное свойство. Для этого я завел специяальное свойство.
Значение хранится в свойстве объекта, объект находится в DataContext формы.
В корне формы в ресурсах заводите любой объект, например Grid с ключом, например, dcProxy.
Далее там где надо пишите что то вроде Command={Binding DataContext.SomeCmd, Source={StaticResource dcProxy}}
Здравствуйте, detox, Вы писали:
D>Как мне сослаться на DataContext текущей формы?
Стоит использовать правильную терминологию. Никаких "форм" в WPF нет. Есть окна.
DataContext — такое же свойство, как и все остальные. Сослаться можно, например так:
D>А что делать в этом случае?
Непонятно, как один объект сможет предоставить разные значения свойств для разных строк. Мне кажется, тут есть нестыковочка.
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, detox, Вы писали:
D>>Как мне сослаться на DataContext текущей формы? MM>Стоит использовать правильную терминологию. Никаких "форм" в WPF нет. Есть окна. MM>DataContext — такое же свойство, как и все остальные. Сослаться можно, например так: MM>
Что то не проканало, а как биндинг узнает, что надо брать текущее окно? Такое чувство, что не хватает что то типа SELF
D>>А что делать в этом случае? MM>Непонятно, как один объект сможет предоставить разные значения свойств для разных строк. Мне кажется, тут есть нестыковочка.
На это можно не обращать внимание, я не так выразился
Здравствуйте, detox, Вы писали:
D>Что то не проканало, а как биндинг узнает, что надо брать текущее окно? Такое чувство, что не хватает что то типа SELF
В приведенном мною Binding-е, он будет брать значение из окна, в котором лежит DataGrid.
Если не подходит, то уточни, что ты подразумеваешь под "текущим окном"?
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, detox, Вы писали:
D>>Что то не проканало, а как биндинг узнает, что надо брать текущее окно? Такое чувство, что не хватает что то типа SELF MM>В приведенном мною Binding-е, он будет брать значение из окна, в котором лежит DataGrid. MM>Если не подходит, то уточни, что ты подразумеваешь под "текущим окном"?
Да да именно так мне нужно текущее окно.
но грид лежит в UserControl, я исправил соответственно биндинг, но это не помогло.
Здравствуйте, detox, Вы писали:
D>Да да именно так мне нужно текущее окно. D>но грид лежит в UserControl, я исправил соответственно биндинг, но это не помогло.
Binding пишет ошибки в окно Output. Погляди что там.
D>но грид лежит в UserControl, я исправил соответственно биндинг, но это не помогло.
Можно попробовать окну или UserControl'у присвоить какое-нибудь имя x:Name="...", а в байндинге на него сослаться через ElementName.
Хотя RelativeSource надежнее должен работать. Советую проверить две вещи:
— что у вас на самом деле в DataContext'е находитсяж
— попробовать сначала DataGridTextColumn.Header к вашему свойству прибайндить. Может ошибка не в байндинге, а в "property:Additional.Default"
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, detox, Вы писали:
D>>Да да именно так мне нужно текущее окно. D>>но грид лежит в UserControl, я исправил соответственно биндинг, но это не помогло. MM>Binding пишет ошибки в окно Output. Погляди что там.
Да вот как раз и не понятно, что он пишет
A 'Binding' cannot be set on the 'SetDefault' property of type 'DataGridComboBoxColumn'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
Причем когда я просто задаю значение все отлично.
Сейчас попробывал не работает даже вот такой вариант:
Здравствуйте, detox, Вы писали:
D>A 'Binding' cannot be set on the 'SetDefault' property of type 'DataGridComboBoxColumn'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
D>property:Additional.Default="{Binding Source={x:Static config:Settings.Default}, Path=Prop}"
Что-то я не понял. Так свойство называется Default или SetDefault? Как свойство объявлено в коде?
MM>Что-то я не понял. Так свойство называется Default или SetDefault? Как свойство объявлено в коде?
скорей всего AttachedProperty неправильно зарегистрировано, что-нибудь типа того, что в ownerType вместо Additional DataGridComboBoxColumn подсунуто.