Флажок twoway mode не обновляет viewmodel - PullRequest
0 голосов
/ 05 июня 2011

Очень простая проблема здесь. У меня есть некоторые чекбоксы с привязками IsChecked, установленными в свойствах моей модели представления. Режим привязки - twoway. Однако, когда они проверены, свойство viewmodel не обновляется. Я нашел сообщение о настройке клик-режима флажка, и я попробовал все варианты: Hover, Press и Release. Ни один из них не решает проблему.

Ответы [ 2 ]

0 голосов
/ 06 июня 2011

Попробуйте это:

<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();
    }
}
0 голосов
/ 06 июня 2011

Является ли ваша собственность ненадежным булом, как CheckBox.IsChecked?

В противном случае проверьте все, что необходимо для работы шаблона MVVM: ваше свойство является общедоступным с использованием метода получения и установки, реализующего INotifyPropertyChanged и т. Д.

Правильно ли привязаны другие свойства? Ваш DataContext может быть не прав ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...