在我的应用程序中,我使用事件来检查网络状态。在MainWindow中,我实例化了一些用户控件(例如,我有3个子用户控件),在其中一个子控件中,我需要将App中的事件捕获到此特定用户控件。
在App中我用它来开始:
protected override void OnStartup(StartupEventArgs e)
{
NetworkStatus.AvailabilityChanged +=
new NetworkStatusChangedHandler(DoAvailabilityChanged);
base.OnStartup(e);
}
static void DoAvailabilityChanged(
object sender, NetworkStatusChangedArgs e)
{
//this method will send a notification
//ReportAvailability();
}
当我发现这个事件时,我需要更改StackPanel中的画笔。在我创建了两个画笔之后,我怎么能改变它们?我看过一些有关自定义触发器的信息。我怎样才能在StackPanel中使用它们?
答案 0 :(得分:1)
我使用了隧道事件。 在子视图模型中:
#region Events
public readonly static RoutedEvent NetworkStatusEvent =
EventManager.RegisterRoutedEvent(
"NetworkStatusEvent",
RoutingStrategy.Tunnel,
typeof(RoutedEventHandler),
typeof(NetworkStatusViewModel));
#endregion
public void NetworkStatus_Changed(Object sender, RoutedEventArgs e)
{
Image = "home-scanner";
IsAvailable = NetworkStatus.IsAvailable ? true : false;
TextLegend = "sfsdfhf";
//RaiseEvent(new RoutedEventArgs(NetworkStatusViewModel.GreetEvent, this));
e.Handled = true;
}
在MainViewModel中:
private static NetworkStatusViewModel networkStatusViewModel = new NetworkStatusViewModel();
public static NetworkStatusViewModel NetworkStatusViewModel
{
get
{
return networkStatusViewModel;
}
//set {
// networkStatusViewModel = value;
//}
}
我希望这会有所帮助。