【发布时间】:2010-11-25 08:28:00
【问题描述】:
我在 C# 库类中有一个实体类并链接到 Silverlight 类库 (实体必须在 C# 类中,因为与其他系统的遗留兼容性)
示例(C# 库):
public class TestClass
{
private string _testValue;
public string TestValue
{
get { return _testValue; }
set
{
if (_testValue!= value)
{
_testValue = value;
OnPropertyChanged("TestValue");
}
}
}}
这个类链接到 Silverlight 类库。
在 MVVM 上有一个属性
private TestClass _testProp = new TestClass();
public TestClass TestProp
{
get
{
return _testProp ;
}
set
{
if (value != _testProp )
{
_testProp = value;
RaisePropertyChanged("TestProp");
PressCommand.CanExecuteChanged();
}
}
}
属性绑定到 XAML 中的控件
<TextBox Text="{Binding TestProp.TestValue, Mode=TwoWay}">
<Button Content="Press" Command="{Binding PressCommand}" />
我想用 RelayCommands CanExecute 控制按钮取决于 TestClass 中的 TestValue...
PressCommand = new RelayCommand(() =>
{
DoSomething();
}, () => TestProp.TestValue != string.empty);
但是,如果 TestValue 发生更改(不同于空字符串),PressCommand CanExecute 似乎没有注意到更改并且未启用,使其无法使用...
这种set-tu可以用CanExecute吗
【问题讨论】:
标签: silverlight mvvm mvvm-light relaycommand canexecute