У меня есть три проекта в моем решении:UserControl DataContext Связывание
- Моего главного приложение WPF, который содержит MainWindow + MainViewModel
- UserControl библиотеку с UserControl (ConfigEditorView)
- Класс UIProcess с ViewModel для UserControl (ConfigEditorViewModel)
В моем MainWindow я хочу использовать UserControl с ViewModel UIProcess.
Сначала я поставил UserControl в моих MainWindow:
<TabItem Header="Editor">
<Grid>
<cel:ConfigEditorView DataContext="{Binding ConfEditModel, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</TabItem>
Я не знаю, какой из этих свойств мне нужно здесь, так что я положил все вместе, но он по-прежнему не работает.
Тогда я поставил это в моем MainViewModel:
public ConfigEditorViewModel ConfEditModel { get; set; }
С простым методом, который связан с кнопкой:
private void doSomething()
{
ConfEditModel = new ConfigEditorViewModel("Hello World");
}
Моего ConfigEditorViewModel выглядит в основном так:
public class ConfigEditorViewModel : ViewModelBase
{
private string _Description;
public string Description
{
get
{
return _Description;
}
set
{
_Description = value;
base.RaisePropertyChanged();
}
}
public ConfigEditorViewModel(string t)
{
Description = t;
}
}
Описание привязано к TextBox в моем UserControl.
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,10" Text="{Binding Description}"/>
Когда я запускаю приложение и нажимаю кнопку «Текст», TextBox должен содержать «Hello World», но он пуст.
Что я сделал не так?
Ваш ConfEditModel не уведомляет UI изменения, поэтому DataContext вашего cel: ConfigEditorView не обновляется. – nkoniishvt
http://stackoverflow.com/questions/28175338/hair-loss-and-mvvm-user-controls – blindmeis
Спасибо @nkoniishvt Я сделал не считал, что при кодировании, но теперь он работает нормально. – Marlon