WPF: привязка непосредственно к элементу управления

Asked
Viewd7490

2

Мне нужно связать свойство UserControl непосредственно с другим элементом управления, а не с каким-либо конкретным свойством этого элемента управления.Как лучше всего этого добиться?Я пробовал различные комбинации свойств Binding, но безрезультатно.

Для некоторого контекста UserControl имеет свойство Next, которое указывает, какой элемент управления будет следующим в иерархии навигации;он похож на TabIndex, но для контекстно-зависимой навигации.

 <c:MyControl x:Name="First" Next="{Binding ???}" />
<c:MyControl x:Name="Second" />
 

Прочитав документацию, я предположил, что должен был уметь: {Binding Source=Second, BindsDirectlyToSource=True}, но это не сработало.

  • Как насчет привязки к родительскому элементу с Path=Second?

    R. Martinho Fernandes07 ноября 2009, 11:27

2 ответов

11

Свойство ElementName равноваш друг

  • Раньше я безуспешно пробовал ElementName, но после некоторого дальнейшего расследования выяснилось, что он работает нормально, но то, как я отлаживал, было неверным.Мое переопределенное событие было вызвано для Second без моего ведома, поэтому Next всегда был нулевым.Как только я понял это и получил повышение события против First, свойство было установлено.

    James Gregory07 ноября 2009, 12:18
3

Ответ ArildF {Binding ElementName = Second} - лучший прямой ответ на ваш вопрос, но рассматривали ли вы возможность использования встроенных функций навигации WPF?

 <c:MyControl x:Name="First" KeyboardNavigation.TabIndex="1" />
<c:MyControl x:Name="Second" KeyboardNavigation.TabIndex="2" />
 

Также посмотрите:

  • Перечисление KeyboardNavigationMode

  • KeyboardNavigation.DirectionalNavigation / TabNavigation / ControlNavigation

  • KeyboardNavigation.IsTabStop

  • Использование вместо для сохранения элементов управления в естественном порядке

Возможно, нужная вам функциональность уже включена в WPF.

  • Спасибо за предложение, Рэй, и, конечно же, за приведенный пример было бы лучше использовать то, что вы сказали;однако мой пример - чрезмерное упрощение конструкции.

    James Gregory08 ноября 2009, 11:24