У меня есть это ToggleButton
в моем приложении WP7, которое я связываю со свойством в моей ViewModel.У меня также есть команда для ToggleButton
, которая работает при нажатии кнопки.
На основании результата этой команды я установил свойство, связанное со свойством ToggleButton.IsChecked
.Но независимо от того, что я установил для свойства, кнопка переключения живет своей жизнью и просто переключается между непроверенным и проверенным.Это ожидаемое поведение или это ошибка?
Кажется, что кнопка переключения теряет свою привязку при нажатии на нее, это будет правда?Причина, по которой я хочу, чтобы это было связано, заключается в том, что я не всегда хочу менять проверенное состояние, потому что логика в моей команде может дать сбой, например, сеть не работает, поэтому она не может установить то, что я хочу во внутреннем интерфейсе, и так далее.
Есть ли какое-нибудь решение этой проблемы?
Xaml:
<ToggleButton x:Name="ToggleButton" Style="{StaticResource ToggleButtonStyle}" IsChecked="{Binding IsToggleButtonChecked}, Mode=OneWay}" Command="{Binding ToggleButtonCommand, Mode=OneWay}" CommandParameter="{Binding ToggleButtonCommandParameter}"/>
Стиль устанавливает изображение кнопки на основе состояний.Команда выполняет логику при нажатии кнопки и, как было сказано ранее, устанавливает IsToggleButtonChecked на желаемое значение.Я одновременно пробовал OneWay и TwoWay на IsChecked, но я не вижу разницы.
ViewModel:
public const string IsToggleButtonCheckedPropertyName = "IsToggleButtonChecked";
private bool _isToggleButtonChecked;
public bool IsToggleButtonChecked
{
get { return _isToggleButtonChecked; }
set
{
if (_isToggleButtonChecked == value)
{
return;
}
_isToggleButtonChecked = value;
RaisePropertyChanged(IsToggleButtonCheckedPropertyName);
}
}
Это свойство устанавливается каждый раз, когда я хочу изменить проверенное состояниекнопки переключения.