Пользовательские события в XAML в моем пользовательском контроллере на Windows Phone 7

#c# #silverlight #events #xaml #windows-phone-7

#c# #silverlight #Мероприятия #xaml #windows-phone-7

Вопрос:

Я создаю UserControl в Windows Phone 7, и я хочу, чтобы, когда пользователь нажимает на кнопку Ok, другие XAMLs, использующие мой UserControl, могли добавлять событие, связанное с этим.

Используя пример, это выглядит так:

У меня есть моя MainPage.xaml, и я использую там свой UserControl, так что это что-то вроде:

 <local:MyUserControl Canvas.Top="0" x:Name="lSelector" Width="480" Height="800" Value="0000"/>
  

Значение — это просто свойство DependencyProperty, которое я создал. Я хочу иметь возможность делать что-то вроде этого:

 <local:MyUserControl Canvas.Top="0" x:Name="lSelector" Width="480" Height="800" Value="0000" ValueChanged="lSelector_ValueChanged"/>
  

как я могу это сделать?

Ответ №1:

Добавьте событие в свой UserControl, как показано в приведенном ниже коде, и оно будет выглядеть как обычное событие

     public partial class UserControl1 : UserControl
    {
       public delegate void ValueChangedEventHandler(object sender, EventArgs e);

       public event ValueChangedEventHandler ValueChanged;

       public UserControl1()
       {
           // Required to initialize variables
           InitializeComponent();
       }

       private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
       {
          if (ValueChanged != null)
          {
              ValueChanged(this, EventArgs.Empty);
          }
       }
   }
  

Пользовательское событие

Тогда просто подпишитесь на него

    private void UserControl1_ValueChanged(object sender, System.EventArgs e)
    {
        // TODO: Add event handler implementation here.
    }
  

Ответ №2:

Попробуйте использовать DependencyPropertyChangedEventHandler.

Ie.

     public event DependencyPropertyChangedEventHandler SelectionChanged
    {
        add
        {
        }
        remove
        {
        }
    }
  

Итак, вы должны увидеть событие изменения выбора в вашем пользовательском элементе управления xaml