#wpf #user-controls #handler #event-binding
#wpf #пользовательские элементы управления #обработчик #привязка события
Вопрос:
Я использую Visual Studio 2010. У меня есть два пользовательских класса usercontrol в wpf. И существует основной класс пользовательского элемента управления с именем MainWindow.xaml. Я добавил два разных класса с именами ListTreeviewContentPane.xaml и ToolBarMenuContentPane.xaml. В MainWindow.xaml я добавил их, используя этот тип кода-
<local:ListTreeViewContentPane x:Name="usertreeview"></local:ListTreeViewContentPane>
<local:ToolBarMenuContentPane x:Name="usertoolbar"></local:ToolBarMenuContentPane>
Я хочу щелкнуть в usertreeview и для этого запустить код в usertoolbar. Но проблема в том, что usertreeview не имеет понятия об экземпляре usertoolbar. Я сделал это с помощью делегата и события. Но поскольку они являются дочерними элементами Mainwindow. Возможно ли создать действие в usertreeview и перехватить его или написать обработчик в usertoolbar или внести изменения в usertoolbar без использования делегирования и привязки события?
или это возможно — щелкнуть в usertreeview и внести изменения в usertoolbar, поскольку они оба являются дочерними элементами mainwindow без использования делегирования?
Ответ №1:
Используя взаимодействие из Blend SDK, вы можете запускать события в других элементах управления и вызывать методы, которые, похоже, соответствуют вашей проблеме, например
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
<TextBox>
<i:Interaction.Triggers>
<i:EventTrigger SourceName="buton" EventName="Click">
<ei:CallMethodAction MethodName="Clear" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
<Button Name="buton" Content="Clear Text" />
При нажатии кнопки срабатывает триггер в текстовом поле и вызывается метод Clear
в текстовом поле, очищающий текст.