c # Окно обновления WPF при нажатии кнопки - PullRequest
0 голосов
/ 30 октября 2018

Я возился с c # в Visual Studio (довольно новым для него) и пытался создать приложение с использованием 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();

    }

}

1 Ответ

0 голосов
/ 31 октября 2018

Если вы хотите обновить слой 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...