首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击按钮时的c# WPF更新窗口

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

Stack Overflow用户
提问于 2018-10-31 04:30:15
回答 1查看 1K关注 0票数 0

我一直在Visual Studio中使用c# (这是我的新手),并且一直在尝试使用WPF构建一个应用程序,我似乎不知道如何在我的环境中当一个按钮被点击时更新我的WPF视图。我已经尝试将我的代码精选为相关信息

我的.cs文件中有以下场景

代码语言:javascript
运行
复制
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文件如下所示

代码语言:javascript
运行
复制
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();

    }

}
EN

回答 1

Stack Overflow用户

发布于 2018-10-31 05:25:55

如果希望在按下按钮时更新View层,可以重新指定DataContext。例如:

代码语言:javascript
运行
复制
public static void Eval_Click(object sender, EventArgs e)
{
    this.DataContext = new MyDataContext();
}

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

代码语言:javascript
运行
复制
public event PropertyChangedEventHandler PropertyChanged;  
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")  
{  
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public void UpdateView()
{
    NotifyPropertyChanged("foo");
    NotifyPropertyChanged("bar");
}  

..。

代码语言:javascript
运行
复制
public static void Eval_Click(object sender, EventArgs e)
{
    (this.DataContext as MyDataContext).UpdateView();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53072439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档