我正在使用IDataErrorInfo爲某些值實現一些基本邏輯驗證。這似乎很好地工作,而且我使用的是contentpresenter來顯示結果:使用IDataErrorInfo進行驗證
<ContentPresenter Content="{ Binding ElementName =MyElement, Path=(Validation.Errors).CurrentItem}"
HorizontalAlignment ="Left">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<TextBlock Foreground ="Red" FontStyle="Italic" Text="{ Binding Path =ErrorContent}" />
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
我得到一個不錯的紅色消息時,有一個問題,有問題的領域是正確的高亮顯示。但是,如果發生這種情況,我想禁用表單的保存按鈕。這是我到目前爲止已經試過(沒有成功):
<Button Content="Save" Click ="MyButton_Click"
IsEnabled="{Binding Converter={StaticResource ValidConverter}, ConverterParameter={Binding ElementName=MyElement, Path=(Validation.Errors).CurrentItem}}"/>
ValidConverter僅僅是一個空或空字符串返回true的轉換器。
我也試過觸發器,像這樣的(嘗試都觸發和DataTrigger):
<Button Content="Save" Click ="MyButton_Click"
<Button.Style>
<Style>
<Style.Triggers>
<Setter Property ="Button.IsEnabled" Value="True" />
<DataTrigger Binding ="{ Binding Path=(Validation.HasError)}" Value ="True">
<Setter Property ="Button.IsEnabled" Value="False" />
</ DataTrigger>
</Style.Triggers>
</Style>
</ Button.Style>
</ Button>
我發現這方面的一些在線信息,而據我可以告訴觸發方法應該工作;但是,如果我使用觸發器,則什麼都不會發生,並且DataTrigger不會編譯(錯誤MC1000:未知構建錯誤,'索引(基於零)必須大於或等於零且小於參數列表的大小)。
有誰能告訴我爲什麼這不起作用,我在這裏做錯了什麼?
'{Binding Path = {Validation.HasError}}'應該是'{Binding Path =(Validation.HasError)}'typo? – Shoe
是 - 錯字...現在修復剛更新的答案 –