Как добиться события клика через свойство зависимости в silverlight? - PullRequest
1 голос
/ 13 января 2012

Я довольно новичок в мире Silverlight, поэтому, пожалуйста, потерпите меня. Я создал пользовательский элемент управления для элемента управления, который будет отображаться в элементе управления. Теперь в этом пользовательском элементе управления есть кнопка. Теперь я мог бы просто добавить обработчик события click к кнопке в резервном cs-файле пользовательского элемента управления, и это было бы нормально. Но есть ли способ указать мне обработчик события кнопки пользовательского элемента управления во время объявления пользовательского элемента управления? то есть что-то вроде этого в моем pivot_page.xaml

<custom:myPivotItem background="..." height=".." width=".." click="myHandler"/>

где myHandler объявлен в pivot_page.cs? Спасибо

Ответы [ 2 ]

1 голос
/ 16 января 2012

Решено, объявив RoutedEventHandler в файле cs пользовательских элементов управления (myCustomPivotItem.cs).

 public event RoutedEventHandler Click;

Затем в onApplyTemplate я получаю доступ к объекту прямоугольника с

 Rectangle rect = this.GetTemplateChild("rectObject") as Rectangle;
 rect.Tap += new EventHandler<GestureEventArgs>(RectView_Tap);

Затем я объявил RectView_Tap в том же файле cs (myCustomPivotItem.cs)

    private void RectView_Tap(object sender, GestureEventArgs e)
    {
        if (Click != null)
            Click(this, new RoutedEventArgs());
    }

в моем файле MainPage.xaml я объявил пользовательский элемент управления следующим образом:

 <controls:PivotItem x:Name="pivotitem2">
     <view:myCustomePivotItem x:Name="custompivotItem2" Click="myHandler"/>
 </controls:PivotItem>

и в MainPage.cs я объявил myHandler ...

 void myHandler(object sender, RoutedEventArgs e)
    {
        //delegate operation
        MessageBox.Show("Clicked!");
    }

И все работает как надо !! :) Надеюсь, это поможет всем, кому это нужно.

1 голос
/ 13 января 2012

Вы можете выставить публичное событие в вашем пользовательском элементе управления, которое отображается на событие нажатия кнопки.

public event RoutedEventHandler Click
{
    add { this.button.Click += value; }
    remove { this.button.Click -= value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...