繁体   English   中英

c#WPF按钮上的更新窗口单击

[英]c# WPF Update Window on Button Click

我一直在使用Visual Studio中的c#(不是它的新手),并且一直在尝试使用WPF构建应用程序,而且我似乎无法弄清楚单击按钮时在我的环境中如何更新WPF视图。 我试图将代码剔除到相关信息

我的.cs文件中有以下情况

class Program
{

    [STAThread]
    static void Main(string[] args)
    {

        try
        {
            using (VMS.TPS.Common.Model.API.Application app = VMS.TPS.Common.Model.API.Application.CreateApplication("null", "null"))
            {
                Execute(app);
            }
        }
        catch (Exception e)
        {

            MessageBox.Show(e.ToString());

        }
    }


    static void Execute(VMS.TPS.Common.Model.API.Application app)
    {
        Window window = new Window();
        MainWindow mainWindow = new MainWindow(app);
        mainWindow.evalButton.Click += Eval_Click //Button defined in .xaml

        //Add a bunch of items

        window.ShowDialog();
    }
    public static void Eval_Click(object sender, EventArgs e)
    {
        //need to add some more stuff to mainWindow and update window
    }
}

我的MainWindow.xaml文件具有定义为.MainWindow的类,并且MainWindow.xaml.cs文件如下

public partial class MainWindow : UserControl
{

    private VMS.TPS.Common.Model.API.Application _application;

    public MainWindow(VMS.TPS.Common.Model.API.Application Application)
    {
        _application = Application;


        InitializeComponent();

    }

}

如果要在单击按钮时更新View图层,则可以重新分配DataContext 例如:

public static void Eval_Click(object sender, EventArgs e)
{
    this.DataContext = new MyDataContext();
}

但是,如果您遵循MVVM模式,则您的DataContext应该继承自INotifyPropertyChanged接口,您也可以仅调用PropertyChangedEventHandler事件来更新View层中的特定绑定。 例如:

public event PropertyChangedEventHandler PropertyChanged;  
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")  
{  
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public void UpdateView()
{
    NotifyPropertyChanged("foo");
    NotifyPropertyChanged("bar");
}  

...

public static void Eval_Click(object sender, EventArgs e)
{
    (this.DataContext as MyDataContext).UpdateView();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM