#silverlight #silverlight-4.0 #mvvm
#silverlight #silverlight-4.0 #mvvm
Вопрос:
Здесь очень простая проблема. У меня есть несколько флажков с их отмеченными привязками, установленными к свойствам в моей viewmodel.Режим привязки — twoway. Однако, когда они отмечены, свойство viewmodel не обновляется. Я нашел сообщение о настройке режима щелчка флажка, и я перепробовал все варианты: наведите курсор, нажмите и отпустите. Ни одно из этих действий не устраняет проблему.
Комментарии:
1. Образец вашего Xaml был бы полезен.
Ответ №1:
Является ли ваше свойство обнуляемым bool, подобным CheckBox.IsChecked
?
В противном случае проверьте все, что необходимо для работы шаблона MVVM: ваше свойство является общедоступным с получателем и установщиком, реализацией INotifyPropertyChanged
и т.д.
Правильно ли привязаны другие свойства? Вы DataContext
можете ошибаться…
Ответ №2:
Попробуй это:
<Window x:Class="WpfTestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" >
<StackPanel>
<CheckBox Width="250" Height="30" IsChecked="{Binding Path=IsTrue, Mode=TwoWay}" />
<TextBlock Text="{Binding Path=IsTrue}" />
</StackPanel>
</Window>
Создать ViewModel:
public class MainWindowViewModel :INotifyPropertyChanged
{
private bool _isTrue;
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChange(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public bool IsTrue
{
get { return _isTrue; }
set
{
_isTrue = value;
OnPropertyChange("IsTrue");
}
}
}
Привязка к модели просмотра в коде MainWindow.cs позади
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
}