【问题标题】:How to change FlagEnumEditor Color in Telerik WPF?如何在 Telerik WPF 中更改 FlagEnumEditor 颜色?
【发布时间】:2017-04-16 19:08:00
【问题描述】:

我在名为 Statistiken 的列中使用 WPF Telerik FlagEnumEditor。 FlagEnumEditor 使我能够存储枚举器中定义的值的任意组合。

我面临的问题是我无法改变它的颜色。我希望它是透明的或白色的,就像我的 RadGridView 中的所有其他列一样。

我已将 FlagEnumEditor BorderBrush 和 Background 设置为透明和一些其他颜色,但没有任何反应。我错过了什么吗?我不明白为什么这里的颜色没有变化。如何将列 Statistiken 的颜色更改为与列 Datentyp 相同的颜色?

Stitistiken 列 XAML 源代码:

<telerik:GridViewDataColumn x:Name="CheckComboBoxColumn"
                            Header="Statistiken"
                            IsReadOnly="True">
   <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
              <telerik:FlagEnumEditor BorderBrush="Transparent"
                                      Background="Transparent"
                                      Margin="-4,0,-2,0"
                                      Value="{Binding Aggregates, Mode=TwoWay}"
                                      EnumType="viewModels:Aggregates" />
        </DataTemplate>
   </telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>

枚举聚合:

[Flags]
public enum Aggregates
{
    All = -1,
    None = 0,
    Avg = 1,
    Count = 2,
    Min = 4,
    Max = 8,
    Sum = 16
}

Datentyp 列 XAML 源代码,但这里我使用的是 RadComboBox,因为我不需要组合 Enum 值:

<telerik:GridViewDataColumn Header="Datentyp">
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
             <telerik:RadComboBox BorderBrush="Transparent"
                                  Background="Transparent"
                                  Margin="-5,0,-2,0"
                                  ItemsSource="{Binding DataContext.ColumnTypes, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}},UpdateSourceTrigger=PropertyChanged}"
                                  SelectedItem="{Binding ColumnType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
             </telerik:GridViewDataColumn.CellTemplate>
    <telerik:GridViewDataColumn.CellEditTemplate>
         <DataTemplate>
              <telerik:RadComboBox BorderBrush="Transparent"
                                   Background="Transparent"
                                   Margin="0,0,0,0"
                                   ItemsSource="{Binding DataContext.ColumnTypes, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}},UpdateSourceTrigger=PropertyChanged}"
                                   SelectedItem="{Binding ColumnType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>

ps。我也对与 FlagEnumEditor 效果相同的解决方案持开放态度。

【问题讨论】:

  • 你可能正在寻找这个docs.telerik.com/devtools/wpf/api/html/…
  • @Aybe 我不认为它是 HeaderCellStyle 而是 CellStyle (GridViewDataColumn.CellStyle) 或 CellEditTemplate。但我仍然无法做到正确。
  • 您不认为,但您尝试了吗?
  • 嗨@Aybe是的,我试过了。但它只将列的标题颜色更改为白色,然后我看不到字体,一切都消失了。
  • Datentyp 列是如何定义的?

标签: c# wpf xaml telerik


【解决方案1】:

您可以将隐式 RadDropDownButton 样式添加到 FlagEnumEditorResources 属性以更改其颜色:

<telerik:FlagEnumEditor Margin="-4,0,-2,0"
                        BorderThickness="0"
                        Value="{Binding Aggregates, Mode=TwoWay}"
                        EnumType="viewModels:Aggregates">
    <telerik:FlagEnumEditor.Resources>
        <Style TargetType="telerik:RadDropDownButton" BasedOn="{StaticResource {x:Type telerik:RadDropDownButton}}">
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="BorderBrush" Value="Transparent" />
        </Style>
    </telerik:FlagEnumEditor.Resources>
</telerik:FlagEnumEditor>

【讨论】:

  • 很好,这成功了。在设计时我看不到字体,但在运行时一切正常。但为什么是 TargetType RadDropDownButton ?
  • 这是 FlagEnumEditor 在后台使用的控件。
  • 你知道我能不能修复设计时间吗?在设计时它完全是空白的。图片:link
  • 这个解决方案有一个大问题,每次打开 Visual Studio 时都会出现异常:Exception: Cannot find resource named 'Telerik.Windows.Controls.RadDropDownButton'. Resource names are case sensitive.
  • 我通过在我的用户控件的资源中设置隐式样式解决了设计时间问题:&lt;Style TargetType="telerik:RadDropDownButton" BasedOn="{StaticResource {x:Type telerik:RadDropDownButton}}"&gt; &lt;Setter Property="Background" Value="Transparent" /&gt; &lt;Setter Property="BorderBrush" Value="Transparent" /&gt; &lt;/Style&gt; 虽然显式样式会更好(但无法设置)。
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多