У меня есть дочерний элемент управления с флажком и веб-браузером:
<UserControl x:Class="Some.MyUserControl" etc.>
<Grid>
<CheckBox x:Name="chkA" Content="Analysis" Checked="chkA_Checked"></CheckBox>
<WebBrowser Margin="0,30,0,0" Name="wbA"></WebBrowser>
</Grid>
</UserControl>
Я помещаю этот элемент управления в свой файл MainWindow.xaml / .cs:
<Window x:Class Some.MainWindow xmlns:local="clr-namespace:Some" etc.>
<Grid>
<local:MyUserControl x:Name="MyUserControl_Main"></local:MyUserControl>
</Grid>
</Window>
Мой вопросКак мое MainWindow может узнать, что CheckBox (chkA) был проверен?Пока только фактический пользовательский элемент управления знает, что на него нажали?Как я могу выставить событие «Проверено» для моего MainWindow, чтобы увидеть?Или есть лучший способ?
Я искал в Интернете, но, похоже, не могу обернуть голову вокруг того, что вижу.
Заранее спасибо,
-newb
РЕДАКТИРОВАТЬ 1:
Я пытаюсь выполнить следующее без удачи, но, возможно, на правильном пути.
В пределахмой MainWindow.xaml.cs Я добавил:
public static readonly RoutedEvent CheckedEvent = EventManager.RegisterRoutedEvent("Checked", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));
public event RoutedEventHandler Checked
{
add { AddHandler(CheckedEvent, value); }
remove { RemoveHandler(CheckedEvent, value); }
}
И в MyUserControl.xaml.cs я добавил:
private void chkA_Checked(object sender, RoutedEventArgs e)
{
RoutedEventArgs args = new RoutedEventArgs(MainWindow.CheckedEvent);
RaiseEvent(args);
}
РЕДАКТИРОВАТЬ 2:
Переместил ранее упомянутый код в MyUserControl.xaml.cs:
public static readonly RoutedEvent CheckedEvent = EventManager.RegisterRoutedEvent("Checked", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyUserControl));
public event RoutedEventHandler Checked
{
add { AddHandler(CheckedEvent, value); }
remove { RemoveHandler(CheckedEvent, value); }
}
private void chkA_Checked(object sender, RoutedEventArgs e)
{
RoutedEventArgs args = new RoutedEventArgs(MainWindow.CheckedEvent);
RaiseEvent(args);
}
И теперь я могу видеть «Проверенное» событие «Пузырь» вверх так:
<Window x:Class Some.MainWindow xmlns:local="clr-namespace:Some" etc.>
<Grid>
<local:MyUserControl x:Name="MyUserControl_Main" **Checked="MyUserControl_Main_Checked"**></local:MyUserControl>
</Grid>
</Window>
Спасибо @Matt за подсказку!
РЕДАКТИРОВАТЬ 3:
Первый ответ Мэтта - лучший способ, у меня было "Checkbox" против "CheckBox"... Добавление CheckBox.Checked в сетку ловит событие: