我一直在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();
}
}
发布于 2018-10-31 05:25:55
如果希望在按下按钮时更新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();
}
https://stackoverflow.com/questions/53072439
复制相似问题