Как изменить цвет(прогресса/фона) ProgressBarEdit?

334
24 декабря 2017, 06:40

На сайте DevExpress в документации для v.17.2 (я использую DevExpress v15.2, но другой нет и раньше отличий не проявлялось) указано, что якобы цвет некой левой части задаётся свойством AdditionalForeground

ProgressBarEdit.AdditionalForeground Property

Specifies the color of the left side of the ProgressBarEdit. This is a dependency property.

а цвет некой правой части задаёт Foreground

To specify the color of the right side of the ProgressBarEdit, use the Foreground property.

Проблема в том, что оно не работает — только Foreground задаёт цвет текста, отображаемого поверх контрола; задание св-ва Background тоже ничего не меняет.
Т__Т

XAML:

<dxe:ProgressBarEdit Name="fact1" Background="Red"  Foreground="Red" AdditionalForeground ="Red" Value="77" Orientation="Vertical" VerticalAlignment="Stretch" Content="ФАКТ" ShowBorder="False" ContentDisplayMode="Content" IsPercent="True">
                            <dxe:ProgressBarEdit.StyleSettings>
                                <dxe:ProgressBarStyleSettings />
                            </dxe:ProgressBarEdit.StyleSettings>
                        </dxe:ProgressBarEdit>


Подскажите, как изменить цвет(прогресса/фона)? Либо что тогда за левая/правая части имелись в виду?

Answer 1

Необходимо переопределить PanelBackgroundHorizontalTemplate и PanelLeftSideHorizontalTemplate, чтобы изменить цвет для индикатора выполнения и управления фоном в элементе управления ProgressBarEdit.

Пример кода:

<dx:DXWindow
    x:Class="DXWPFApplication31.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DXWPFApplication31"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxet="http://schemas.devexpress.com/winfx/2008/xaml/editors/themekeys"
    Title="DXApplication" Height="185" Width="449"
    SnapsToDevicePixels="True" UseLayoutRounding="True"
    dx:ThemeManager.ThemeName="MetropolisDark" 
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    >
    <Window.Resources>
        <ControlTemplate x:Key="{dxet:ProgressBarEditThemeKey ResourceKey=PanelBackgroundHorizontalTemplate, IsThemeIndependent=true}"  TargetType="{x:Type ContentControl}">
            <Border>
                <Border.Background>
                    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                        <GradientStop Color="Aqua"/> <!--set background-->
                    </LinearGradientBrush>
                </Border.Background>
                <ContentPresenter/>
            </Border>
        </ControlTemplate>
        <ControlTemplate x:Key="{dxet:ProgressBarEditThemeKey ResourceKey=PanelLeftSideHorizontalTemplate}" TargetType="{x:Type ContentControl}">
            <Border Margin="1" CornerRadius="2">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <!--<GradientStop Color="#FF6389C1" Offset="0.004" />
                        <GradientStop Color="#FF7095CA" Offset="1" />
                        <GradientStop Color="#FF305897" Offset="0.5" />
                        <GradientStop Color="#FF244985" Offset="0.5" />-->
                        <GradientStop Color="Green"/><!--set background-->
                    </LinearGradientBrush>
                </Border.Background>
            </Border>
        </ControlTemplate>
        <ControlTemplate x:Key="{dxet:ProgressBarEditStyleThemeKey ResourceKey=PanelTemplateHorizontal, IsThemeIndependent=true}" TargetType="{x:Type dxe:RangeEditBasePanel}">
            <Grid>
                <Grid x:Name="root">
                    <Grid.Resources>
                        <dxe:GridLengthConverter x:Key="GridLengthConverter" />
                    </Grid.Resources>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition x:Name="leftColumn" Width="{Binding Path=(dxe:RangeEditBaseInfo.LayoutInfo).LeftSidePosition, Converter={StaticResource GridLengthConverter}}" />
                        <ColumnDefinition x:Name="rightColumn" Width="{Binding Path=(dxe:RangeEditBaseInfo.LayoutInfo).RightSidePosition, Converter={StaticResource GridLengthConverter}}" />
                    </Grid.ColumnDefinitions>
                    <ContentControl x:Name="back" Grid.ColumnSpan="2" Style="{DynamicResource {dxet:ProgressBarEditThemeKey ResourceKey=PanelBackgroundHorizontalStyle}}" />
                    <ContentControl x:Name="left" Grid.Column="0" Style="{DynamicResource {dxet:ProgressBarEditThemeKey ResourceKey=PanelLeftSideHorizontalStyle}}" />
                    <ContentControl x:Name="right" Grid.Column="1" Style="{DynamicResource {dxet:ProgressBarEditThemeKey ResourceKey=PanelRightSideHorizontalStyle}}" />
                    <ContentControl x:Name="foreground" Grid.ColumnSpan="2" Style="{DynamicResource {dxet:ProgressBarEditThemeKey ResourceKey=PanelForegroundStyle}}" />
                </Grid>
                <ContentControl x:Name="PART_InnerContent" Grid.ColumnSpan="2" Style="{DynamicResource {dxet:ProgressBarEditThemeKey ResourceKey=ContentStyle}}"  Content="{Binding Path=(dxe:BaseEdit.OwnerEdit).DisplayText}" ContentTemplate="{Binding Path=(dxe:BaseEdit.OwnerEdit).ContentTemplate}">
                </ContentControl>
            </Grid>
        </ControlTemplate>
        <Style x:Key="{dxet:ProgressBarEditThemeKey ResourceKey=ContentStyle}" TargetType="{x:Type ContentControl}">
            <Setter Property="Focusable" Value="False" />
            <Setter Property="VerticalAlignment" Value="{Binding Path=(dxe:BaseEdit.OwnerEdit).VerticalContentAlignment}" />
            <Setter Property="HorizontalAlignment" Value="{Binding Path=(dxe:BaseEdit.OwnerEdit).HorizontalContentAlignment}" />
            <Setter Property="Foreground" Value="#993333">
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <dxe:ProgressBarEdit Value="33" 
                             Orientation="Horizontal" 
                             Margin="102,37,96,0" 
                             ContentDisplayMode="Content"/>
    </Grid>
</dx:DXWindow>

Ссылка на источник: Can't change color of BAR in ProgessBarEdit

А также:

  • Change ProgressBarEdit Color doesn't work
  • How to change ProgressBarEdit's progress color depending on the Value property
  • ProgressBarEdit Color
READ ALSO
Закрасить всю строку в Excel

Закрасить всю строку в Excel

Открываю в c# Excel, туда записываю данные в соответствующие строки и столбцы, необходимо по условию выделить строчку каким-то цветом, как это...

371
Incorrect syntax near the keyword &#39;WHERE&#39; - C#

Incorrect syntax near the keyword 'WHERE' - C#

ошибка в этой строке SqlDataReader dr = sqlCommand1ExecuteReader(); остальной код программы

266