【发布时间】:2011-10-12 16:06:58
【问题描述】:
我在我的 WP7 应用程序中有这个 ToggleButton,我绑定到我的 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 设置为所需的值。我在 IsChecked 上尝试过 OneWay 和 TwoWay,但看不出区别。
视图模型:
public const string IsToggleButtonCheckedPropertyName = "IsToggleButtonChecked";
private bool _isToggleButtonChecked;
public bool IsToggleButtonChecked
{
get { return _isToggleButtonChecked; }
set
{
if (_isToggleButtonChecked == value)
{
return;
}
_isToggleButtonChecked = value;
RaisePropertyChanged(IsToggleButtonCheckedPropertyName);
}
}
每次我想更改 ToggleButton 的选中状态时都会设置此属性。
【问题讨论】:
-
您能分享一下您用于切换按钮的 XAML 吗?还有你要绑定的属性的代码吗?
-
如果您使用 mvvm-light 作为视图模型,建议使用 EventToCommand (geekswithblogs.net/lbugnion/archive/2009/11/05/…)
标签: c# .net windows-phone-7 windows-phone-7.1 togglebutton