#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