Я запустил окно WPF из консольного приложения.Но у меня возникают трудности с привязкой данных.
TL; DR: можно ли ссылаться на конкретный (просмотреть) объект модели в WPF XAML?
Этомой код:
Console.cs Консольное приложение запускает представление со статической функцией в функции void Main()
static void StartGUI(ViewModelClass viewmodel)
{
Thread thread = new Thread(() => { new Application().Run(new View.MainWnd(viewmodel)); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
, оно получает объект viewmodel, который имеетинициировано в Main()
.
ViewModel.cs Модель представления - это обычная имплементация интерфейса INotifyPropertyChanged со свойством, которое должно быть привязано к представлению.
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using ConsoleStartsGUI.Model;
namespace ConsoleStartsGUI.ViewModel
{
public class ViewModelClass : INotifyPropertyChanged
{
ModelClass model = new ModelClass();
public string VMProperty
{
get { return model.TestProperty; }
set
{
model.TestProperty = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
View.xaml В представлении у меня возникают проблемы: представление должно знать ту же модель представления, что и консольное приложение.
В настоящее время я использую
<Window.DataContext>
<ViewModel:ViewModelClass/>
</Window.DataContext>
дляпривязать viewmodelclass к представлению (это результат, который я щелкнул в конструкторе VS), поскольку он обычно работает, когда я использую проект WPF с начала.Но это создает новый объект, который не является объектом консольного приложения.
View.xaml.cs
using System.Windows;
using ConsoleStartsGUI.ViewModel;
namespace ConsoleStartsGUI.View
{
public partial class MainWnd : Window
{
public MainWnd(ViewModelClass viewmodel)
{
InitializeComponent();
}
}
}
Есть ли способ ссылки на конкретный объект (представление) модели в XAML?
С наилучшими пожеланиями, Мартин