Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF从视图模型访问代码隐藏_C#_Wpf_Xaml_Mvvm_Notifyicon - Fatal编程技术网

C# WPF从视图模型访问代码隐藏

C# WPF从视图模型访问代码隐藏,c#,wpf,xaml,mvvm,notifyicon,C#,Wpf,Xaml,Mvvm,Notifyicon,使用在我的c#应用程序中显示气球 我希望程序中的触发器在出现时显示为弹出框/气球。问题是,我只能在.xaml.cs文件的代码隐藏中看到如何使用.ShowCustomBalloon方法显示引出序号,该文件在我的ViewModel中没有上下文。项目中的示例之所以有效,是因为它们使用代码隐藏来显示引出序号内容 我需要的是在.xaml文件上有一个事件侦听器,它可以触发这个绑定到viewModel属性的show balloon。问题是我在c#app dev.方面的经验不太好,我想知道如何处理这个问题。在代

使用在我的c#应用程序中显示气球

我希望程序中的触发器在出现时显示为弹出框/气球。问题是,我只能在.xaml.cs文件的代码隐藏中看到如何使用.ShowCustomBalloon方法显示引出序号,该文件在我的ViewModel中没有上下文。项目中的示例之所以有效,是因为它们使用代码隐藏来显示引出序号内容

我需要的是在.xaml文件上有一个事件侦听器,它可以触发这个绑定到viewModel属性的show balloon。问题是我在c#app dev.方面的经验不太好,我想知道如何处理这个问题。

在代码隐藏(视图)中,您应该订阅属性更改事件(或其他事件,这实际上取决于您的ViewModel实现)

以下是ViewModel示例:

public class SomeViewModel : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;

  private string someProperty;
  public string SomeProperty
  {
      get { return someProperty; }
      set
      {
        someProperty = value;
        OnPropertyChanged();
      }
  }

  protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  }
}
以下是示例视图:

public partial class SomeView : Window
{
    public DiscImageView()
    {
        //  ...

        viewModel.PropertyChanged += ViewModel_PropertyChanged;
    }

    private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if (e.PropertyName == nameof(SomeViewModel.SomeProperty))
        {
            //  Logic for changed property event
        }
    }
}

还考虑使用一些MVVM库或框架,它们简化了很多生命。我建议,除此之外,它还有其他功能