2010-07-29 39 views
11

Có cách nào để hiển thị nội dung lỗi trong một TextBlock bên dưới điều khiển tương tự như cách sau đây đặt Chú giải công cụ chứa văn bản lỗi không?WPF Hiển thị TextBlock với thông báo lỗi xác nhận bên dưới điều khiển

 <Style x:Key="textBoxInError" TargetType="Control"> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel> 
         <TextBlock DockPanel.Dock="Left" Foreground="Red" FontWeight="Bold">*</TextBlock> 
         <TextBlock Text="WOULD LIKE TO SHOW WHAT TOOLTIP IS SHOWING" DockPanel.Dock="Bottom" Foreground="Red"/> 
         <Border BorderBrush="Red" BorderThickness="2"> 
          <AdornedElementPlaceholder/> 
         </Border> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="Validation.HasError" Value="True"> 
       <Setter Property="ToolTip" 
         Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
        Path=(Validation.Errors)[0].ErrorContent}"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

Nói cách khác, tôi thay vì hiển thị thông báo lỗi trong TextBlock bên dưới điều khiển thay vì Mẹo công cụ.

+0

Vấn đề tôi đã chạy vào với điều này là những textblock thông báo lỗi sẽ được hiển thị phía trên các điều khiển khác có thể nằm dưới nó. Nó không đụng đến mọi thứ để tạo không gian cho nó. Một cái gì đó để làm với các mẫu lỗi đang được hiển thị trên lớp adorner ... chưa hoàn toàn figured nó ra được nêu ra. – statikuz

Trả lời

18

Các DataContext của ErrorTemplate đã là giá trị của Validation.Errors, vì vậy bạn chỉ có thể làm:

<TextBlock Text="{Binding [0].ErrorContent}" DockPanel.Dock="Bottom" Foreground="Red"/> 

hoặc

<TextBlock Text="{Binding ErrorContent}" DockPanel.Dock="Bottom" Foreground="Red"/> 
Các vấn đề liên quan