2013-01-01 19 views
5

在MSDN似乎是令人困惑的說"you cannot use the Validation.ErrorTemplate attached property like you would with simple controls",我發現它是在每一個我的窗口的XAML可以設置驗證錯誤模板象下面這樣:DataGridTextColumn.EditingElementStyle所有DataGrid中

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

我現在想的是爲共享主題資源字典中的所有數據網格設置錯誤模板。但我不能做到以下幾點:

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

因爲DataGridTextColumn不是從FrameworkElement繼承;因此不能具有樣式屬性(請參見Why can't I style a DataGridTextColumn?)。

有人能指引我走向正確的方向嗎?

+1

你有沒有想過這一個?我們正在爲我們的應用程序創建一個數據網格樣式,並且希望避免在每一列上內嵌指定EditingElementStyle – havardhu

回答

0

我正在尋找相同問題的答案。您可以使用類似以下樣式的任務稍微減少冗餘。

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

用法:

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

唉。

相關問題