首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF Validation.ErrorTemplate 隨控件可見性自動顯隱

     編輯:關於.NET

現象與成因

預設的 Validation.ErrorTemplate(如紅色邊框)不會隨被驗證控件的 Visibility 變化而自動顯隱。即使將控件放入 Expander 摺疊,錯誤模板仍殘留於畫面,造成使用者困擾。

根本原因:Visibility 屬性不會向下傳遞給視覺樹中的裝飾器。父容器隱藏時,子元素的 Visibility 仍為 Visible,導致 AdornedElementPlaceholder 所在的 Border 仍可見。

正確解法:綁定 IsVisible 配合轉換器

UIElement.IsVisible 為唯讀屬性,能真實反映元素在畫面上是否可見。搭配 BooleanToVisibilityConverter 即可實現同步。

XAML 範例

<BooleanToVisibilityConverter x:Key="BoolToVis" />

<ControlTemplate x:Key="ValidationTemplate">
    <Border BorderBrush="Red" BorderThickness="2"
            Visibility="{Binding ElementName=Holder, Path=AdornedElement.IsVisible,
                                 Converter={StaticResource BoolToVis}}">
        <AdornedElementPlaceholder x:Name="Holder" />
    </Border>
</ControlTemplate>

此寫法確保錯誤模板僅在被驗證控件真正可見時顯示,解決摺疊、標籤頁切換等場景下的殘留問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved