2017-08-20 90 views
0

設置在Resources.Xaml i的特定DataGrid列我手動設置前景WPF觸發無效上式中代碼

Sub New() 
     FontWeight = FontWeights.Bold 
     Foreground = Brushes.Blue 
End Sub 

設置從DataGrid單元格

<Style TargetType="DataGridCell" > 
    <Style.Triggers> 
     <Trigger Property="DataGridCell.IsSelected" Value="True"> 
      <Setter Property="Background" Value="CornflowerBlue" /> 
      <Setter Property="Foreground" Value="White" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

樣式當電池背景劑量改變的觸發器,但前景dosen't

我相信這是由於我設置forground代碼

我能做些什麼來解決這個問題?

注:Foreground = Brushes.Blue您設置前景色依賴項屬性的本地值我不能設置列的foregroud在XAML

回答

1

寫作。本地值的優先級高於觸發器的設置值。我會建議創建DataGridCell命名樣式,從風格爲主衍生,並在代碼中應用衍生的風格:

<Style TargetType="DataGridCell" > 
    <Style.Triggers> 
     <Trigger Property="DataGridCell.IsSelected" Value="True"> 
      <Setter Property="Background" Value="CornflowerBlue" /> 
      <Setter Property="Foreground" Value="White" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

<Style x:Key="BlueCell" TargetType="DataGridCell" BasedOn="{x:Type DataGridCell}"> 
    <Setter Property="Foreground" Value="Blue" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
</Style> 
Sub 
    CellStyle = (Style)datagrid.FindResource("BlueCell"); 
End Sub 

我使用的,因爲我缺乏vb.net知識C#語法。代碼調用數據網格的FindResource方法以檢索「BLUECELL」風格,並投以Style類型後,被分配到一列

+0

感謝您的CellStyle,花了我在正確的方向 –

+0

@YonatanTuchinsky,太好了。如果你必須改變一些東西以使其工作起作用,建議對此答案進行改進(建議使用「編輯」) – ASh

+1

我按照你的建議做了一些改動,將原始風格作爲關鍵字並基於該關鍵點 - i還將它添加到應用程序Resouces.xaml中,並從那裏獲得了資源Application.Current.Resources(「NewStyle」)' –