У меня есть userControl с именем SensorControl
, который я хочу привязать его dataContext к классу viewModel с именем SensorModel
. Связывание успешна и начальные значения из ViewModel видна в UserControl, но проблема в том, что, когда я изменить свойства ViewModel, тем UserControl не обновляет, и я должен вручную обновлять, что (по присваивая null его текстовому контенту и снова присваивая viewModel). Вот упрощенный пример моего кода.Просмотр не обновляется с изменением viewModel
SensorControl.xml:
<UserControl ...[other attributes]... DataContext={Binding Model}>
.
.
.
<Label Content="{Binding Title}"/>
.
.
.
</UserControl>
SensorControl.xml.cs (код-сзади):
public partial class SensorControl : UserControl
{
public SensorModel model;
public SensorModel Model
{
get { return model; }
set { model = value; }
}
public SensorControl(SensorModel sm)
{
Model = sm;
}
}
MainWindow.xml.cs:
public partial class MainWindow : Window
{
public SensorModel sensorModel_1;
public SensorControl sensorControl_1;
public MainWindow()
{
InitializeComponent();
sensorModel_1 = new SensorModel(...[some arguments]...);
sensorControl_1 = new SensorControl(sensorModel_1);
mainGrid.Children.Add(sensorControl_1);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
sensorModel_1.Title = "myTitle";
//The UserControl does not update
}
0) Я реализовал INotifyPropertyChanged
в SensorModel
1) Причина, в которой я нуждаюсь в этом, заключается в том, что в моем проекте есть только одна концепция «Датчик» (это настоящий электронный датчик), и поэтому у меня есть одна модель для нее (которая касается реального датчика, база данных и т. д.), но в пользовательском интерфейсе у меня есть несколько userControl для представления различных аспектов Sensor. Поэтому я должен создать один экземпляр модели (SensorModel) для каждого реального датчика, и несколько пользовательских контроллеров должны привязываться к этому (каждый использует разные части модели).
2) Я не так уж и новичок в WPF, но я как бы новичок в MVVM, и, возможно, я неправильно понимаю что-то существенное, поэтому я был бы признателен, если бы кто-то мог четко объяснить правильный подход.
Заранее спасибо
'ViewModel' не должен быть частью' UserControl'. – AnjumSKhan