2013-01-01 35 views
5

Trong khi MSDN có vẻ là khó hiểu bằng cách nói "you cannot use the Validation.ErrorTemplate attached property like you would with simple controls", tôi thấy nó có thể trong mỗi của XAML cửa sổ của tôi để thiết lập xác nhận mẫu lỗi như dưới đây:DataGridTextColumn.EditingElementStyle cho tất cả các lưới dữ liệu sủ

<DataGridTextColumn ...> 
    ... 
    <DataGridTextColumn.EditingElementStyle> 
     <Style> 
      <Setter Property="Validation.ErrorTemplate" 
        Value="{StaticResource MyValidationErrorTemplate}"/> 
     </Style> 
    </DataGridTextColumn.EditingElementStyle> 
</DataGridTextColumn> 

Những gì tôi muốn bây giờ là để đặt mẫu lỗi cho tất cả các thẻ dữ liệu trong từ điển tài nguyên chủ đề được chia sẻ. Nhưng tôi không thể làm như sau:

<Style TargetType="{x:Type DataGridTextColumn}"> 
    <Setter Property="Validation.ErrorTemplate" 
      Value="{StaticResource MyValidationErrorTemplate}"/> 
</Style> 

DataGridTextColumn không được kế thừa từ FrameworkElement; do đó không thể có thuộc tính kiểu dáng (xem Why can't I style a DataGridTextColumn?).

Ai đó có thể chỉ cho tôi đúng hướng không?

+1

bạn đã bao giờ tìm ra điều này chưa? Chúng tôi đang trong quá trình tạo kiểu dữ liệu cho ứng dụng của chúng tôi và muốn tránh phải chỉ định EditingElementStyle trên mỗi cột – havardhu

Trả lời

0

Tôi đang tìm câu trả lời cho cùng một câu hỏi. Bạn có thể làm cho bài tập hơi tiết kiệm hơn một chút với một cái gì đó giống như phong cách sau đây.

<Style x:Key="TextColumnErrorStyle" TargetType="{x:Type TextBox}"> 
    <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplateStyle}"></Setter> 
</Style> 

Cách sử dụng:

<DataGridTextColumn Width="2*" Header="IP Address" 
    Binding="{Binding IpDestination,  
    UpdateSourceTrigger=PropertyChanged, 
    ValidatesOnExceptions=True}" 
    EditingElementStyle="{StaticResource TextColumnErrorStyle}"/> 

Ugh.

Các vấn đề liên quan