1
在WPF手动触发验证我有一个实现IDataErrorInfo的(从卡利科技的Screen类派生)视图模型这样同时使用卡利微
public class MyViewModel : Screen, IDataErrorInfo
{
...
public BindableCollection<MyEntity> Entities { get; set; }
public MyEntity SelectedEntity
{
get { return _entity; }
set
{
_entity = value;
OnSelectedEntityChanged();
}
}
private void OnSelectedEntityChanged()
{
// implementation
}
public virtual string Error
{
get { // implementation }
}
public virtual string this[string columnName]
{
get { // implementation }
}
public void Populating(PopulatingEventArgs e)
{
// implementation
}
}
它绑定到使用卡利微(只有以下XAML相关部分显示)
<tk:AutoCompleteBox
x:Name="Entities"
cal:Message.Attach="[Event Populating] = [Populating($eventArgs)]"
SelectedItem="{Binding Path=SelectedEntity, Mode=TwoWay}"
HorizontalAlignment="Stretch"
FilterMode="None"
IsTextCompletionEnabled="True"
Text="{Binding SearchText}"
ValueMemberPath="Name">
<tk:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</tk:AutoCompleteBox.ItemTemplate>
</tk:AutoCompleteBox>
我遇到的问题是,当我以编程方式更新SelectedEntity属性时,它不会导致验证触发。我尝试了很多不同的可能的解决方案,比如尝试获取绑定表达式并在其上调用ValidateWithoutUpdate(),在XAML中添加触发器,这应该导致验证被触发等,但目前还没有工作。
如何触发最终会调用IDataErrorInfo.Error的验证?
谢谢!