【发布时间】:2016-08-11 09:32:39
【问题描述】:
我有一个复选框,如果复选框更改,我想运行我的方法OnCheckBoxChanged,现在我这样做:
<CheckBox x:Name="myCheckBox"
Content="Run my command"
IsChecked="SetMyCheckBoxState"
Checked="OnCheckBoxChanged"
Unchecked="OnCheckBoxChanged"/>
在后面的代码中:
private void SetMyCheckBoxState()
{
return Helper.GetState();
}
private void OnCheckBoxChanged(object sender, RoutedEventArgs e)
{
if (myCheckBox.IsChecked)
//my logic 1
else
//my logic 2
}
我想以 MVVM 风格做更多的事情,像这样:
public static class Helper
{
public static bool GetState()
{
var state = //My logic;
return state;
}
public static void OnCheckBoxChanged(bool state)
{
if (state)
//my logic 1
else
//my logic 2
}
}
xaml 代码如下所示:
<CheckBox x:Name="myCheckBox"
Content="Run my command"
IsChecked="{Binding Path=Helper.GetState(), Mode=TwoWay}"
Checked="{Binding Path=Helper.OnCheckBoxChanged(How to pass a state here ?)}"
Unchecked="{Binding Path=Helper.OnCheckBoxChanged()}"/>
我的问题是如何将复选框状态传递给Checked="{Binding Path=Helper.OnCheckBoxChanged(How to pass a state here ?)}"
以及如何使它工作,我在这里缺少什么?
【问题讨论】:
-
为什么不使用 bool 类型的属性?然后在 get 和 set 中执行你的逻辑,然后 value 总是会告诉你会发生什么(真或假)。
标签: .net wpf checkbox mvvm data-binding