2012-07-16 148 views
2

我想樣式DataGrid顯示紅色的錯誤邊框時,它的ItemsSource集合中沒有項目。我已經爲觸發器編寫了所有代碼併爲其工作。樣式WPF DataGrid顯示紅色邊框時,有0個項目

這裏是我的嘗試:

<Style x:Key="WarningDataGrid" TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}"> 
    <Style.Triggers> 
     <Trigger Property="ocean:DataGridBehavior.HasWarning" Value="true"> 
      <Setter Property="Control.Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Border BorderThickness="1" BorderBrush="Red"> 
          <AdornedElementPlaceholder /> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(ocean:CheckBoxBehavior.Warning)}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

但因爲我沒有使用驗證框架所發生的一切是紅色邊框取代DataGrid中。

我是否需要從默認樣式開始?如果是的話,我在哪裏找到它。

+0

如何檢查「Items.Count」屬性並檢查值爲「0」? – CodingGorilla 2012-07-16 17:18:19

+0

我已經有了你所描述的代碼。我將編輯該問題以使其更清楚。 – 2012-07-16 17:20:34

+0

好吧,我想我明白了,你想要一個紅色的邊框**,當它的數據網格爲空時,對吧? – CodingGorilla 2012-07-16 17:26:05

回答

3

您正在替換整個模板。只需設置BorderBrush

<Style x:Key="WarningDataGrid" TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}"> 
    <Style.Triggers> 
     <Trigger Property="ocean:DataGridBehavior.HasWarning" Value="true"> 
      <Setter Property="BorderBrush" Value="AliceBlue"/> 
      <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(ocean:CheckBoxBehavior.Warning)}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

這是完美的作品,我想我是在想它。 – 2012-07-16 18:08:10

+0

林間空地它幫助:) – MBen 2012-07-16 18:32:04

0

在綁定中設置ValidateOnErrors = True和ValidateOnExceptions = True。我希望這將有所幫助。

+0

我沒有使用驗證框架,所以這不起作用。謝謝 – 2012-07-16 17:22:17

+0

假設你有DataGridTextColumn並且它綁定到類型爲int的屬性,如果你要在該列中輸入字符串它將通過設置ValidateOnExceptions = True來工作。 – ethicallogics 2012-07-16 17:25:36

+0

我明白,但是我使用自定義驗證代碼來設置屬性,並且我受公司規則的約束來使用此代碼,因此我無法使用驗證框架,並且我設置ValidateOnExceptions在我的情況下不會執行任何操作。 – 2012-07-16 17:35:31