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的驗證?
謝謝!