Пользовательские события в XAML на моем UserControl на Windows Phone 7 - PullRequest
7 голосов
/ 09 ноября 2011

Я делаю UserControl в Windows Phone 7 и хочу, чтобы, когда пользователь нажимает кнопку Ok, другие XAML, использующие мой 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"/>

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

Ответы [ 3 ]

25 голосов
/ 09 ноября 2011

Добавьте событие к вашему 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);
          }
       }
   }

Custom event

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

   private void UserControl1_ValueChanged(object sender, System.EventArgs e)
    {
        // TODO: Add event handler implementation here.
    }
0 голосов
/ 01 апреля 2016

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

Т.е..

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

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

0 голосов
/ 09 ноября 2011

Использование RoutedEvent:

  public class Callbackable : ContentControl
  {
    public static readonly RoutedEvent CommandExecutedEvent = EventManager.RegisterRoutedEvent(
        "CommandExecuted", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Callbackable));

    // Provide CLR accessors for the event
    public event RoutedEventHandler CommandExecuted
    {
      add { AddHandler(CommandExecutedEvent, value); }
      remove { RemoveHandler(CommandExecutedEvent, value); }
    }
  }

Использование:

<local:Callbackable>
    <Button local:Callbackable.CommandExecuted="Button_Executed" >
        Click me
    </Button>
</local:Callbackable>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...