WPF 将事件从 App 发送到用户控件

WPF send event from App to User control

在我的应用程序中,我使用一个事件来检查网络状态。在 MainWindow 中,我实例化了一些用户控件(例如,我有 3 个子用户控件),在其中一个子控件中,我需要捕获从 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 中使用它们?

我使用了隧道事件。 在子视图模型中:

#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;
        //}
    }

希望对您有所帮助。