我有一個MVVM應用程序使用版本3.5實現IDataErrorInfo。我想嘗試和目標4.0,所以已經修改了目標框架設置,並改變了一些位(BitmapFrames等)。大部分事情看起來都很好,而且這個過程相對來說是無痛的,直到我注意到IDataErrorInfo的實現已經受到影響。從3.5的wpf目標版本4.0影響IDataErrorInfo實施
我的驗證控件模板看起來是這樣的:
<ControlTemplate x:Key="temp__">
<Border BorderBrush="Orange" BorderThickness="2" CornerRadius="4" SnapsToDevicePixels="True">
<DockPanel>
<Image HorizontalAlignment="Left" VerticalAlignment="Center"
Width="16" Height="16" Margin="-20,0,0,0"
Source="{StaticResource ErrorIcon}"
ToolTip="{Binding ElementName=adornedElement,
Path=AdornedElement.(Validation.Errors),
Converter={helper:ValidationErrorsToStringConverter}}"/>
<AdornedElementPlaceholder Name="adornedElement"/>
</DockPanel>
</Border>
</ControlTemplate>
,並在文本框樣式用於這樣的:
<Setter Property="Validation.ErrorTemplate" Value="{DynamicResource error_holder}">
在我的ViewModel,GetValidationError(字符串propertyName的)使用一個開關根據我的規則驗證適當的屬性。
問題是,一旦驗證被激發,它不會更新。例如,一個字段可以根據需要設置或不設置。加載時,所需的字段將被標記爲無效並帶有適當的消息。以前,當輸入的值仍然無效時,工具提示中的錯誤消息會更新。但是,這不再起作用,並且錯誤消息仍然保留爲空值消息。
有誰知道在4.0中的IDataErrorInfo的實現可能會造成這種情況的任何變化嗎?任何想法如何解決它?
我的綁定看起來像這樣: 。正如我所說,這一切都工作正常之前,移動到4.0 –
pilsdumps
2011-03-22 19:29:11