2016-08-16 66 views
1
<DataGridCheckBoxColumn Binding="{Binding Value, ValidatesOnDataErrors=True}" 
    Validation.ErrorTemplate="{x:Null}"/> 

我試圖從單元格中移除紅框。這裏的errortemplate = null不會改變任何東西。DataGridCheckBoxColumn上的錯誤模板裝飾器不能被覆蓋

<Style TargetType="{x:Type DataGridCheckBoxColumn}" > 
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
</Style> 

這也沒有做任何事情。我試過DataGridCell,DataGridRow,ContentTemplate,複選框樣式。沒有任何東西能夠從單元格中移除醜陋的紅色框。

我探聽了它,發現一個裝飾器正在被自動創建,未命名和模板化。它連接到複選框。

我得到它的唯一方法是更改​​爲DataGridTemplateColumn並直接在數據模板中創建複選框。然而,這是一個迂迴的並且撤消了我做過的很多其他樣式模板。有沒有辦法讓模板欄像複選框一樣不顯示紅色的錯誤驗證邊框?

這裏的關鍵是我想要錯誤驗證。我只是不想要它做的裝飾者。

+0

您是否嘗試將CheckBox樣式作爲資源添加到您的列中,並將複選框上的ValidationErrorTemplate設置爲null? – lokusking

+0

是的。與使用OP作爲DataGridCell,DataGridRow,ContentTemplate和Checkbox提到的樣式TargetType相同。沒有影響。 – user99999991

回答

1

可能的解決方案可能是像這樣對ElementStyle進行造型。

<DataGrid ItemsSource="{Binding Datas}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridCheckBoxColumn Binding="{Binding Invalid, ValidatesOnDataErrors=True}" Header="Invalid" > 
       <DataGridCheckBoxColumn.ElementStyle> 
        <Style TargetType="{x:Type CheckBox}"> 
         <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter> 
        </Style> 
       </DataGridCheckBoxColumn.ElementStyle> 
      </DataGridCheckBoxColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

注意

擺脫對左邊的紅色exclamationmark的做到這一點:

RowValidationErrorTemplate="{x:Null}" 

DataGrid

+0

所以這個工作,但我遺憾地失去了我的複選框列的所有我的方式,即使我使用BasedOn。我有一個只讀datagridcheckboxcolumsn的樣式,以及datagridcheckbox列上isreadonly爲false時的樣式。 我想我可以很聰明,並在datagridcolumn上做一個datatrigger,將樣式切換爲靜態資源,具體取決於IsReadOnly是true還是false,但是失敗。我希望這更容易。 – user99999991