Стиль закругленного ProgressBar. WPF C#

146
23 мая 2022, 02:30

Суть проблемы вот в чем: Есть прогрессбар, которому нужно скруглить углы (BorderRadius 15). Впринципе я то решение нашел, но оно не подходит т.к при запуске приложения в VS в Output вылетает исключение:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:(no path); DataItem=null; target element is 'VisualBrush' (HashCode=64935954); target property is 'Visual' (type 'Visual')

<Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Grid>
                            <Grid.OpacityMask>
                                <VisualBrush Visual="{Binding ElementName=MaskBorder}"/>
                            </Grid.OpacityMask>
                            <Border x:Name="MaskBorder" 
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}" 
                                    Background="{TemplateBinding Background}"
                                    CornerRadius="15"/>
                            <Rectangle x:Name="PART_Track"/>
                            <Grid x:Name="PART_Indicator" 
                                  ClipToBounds="true" 
                                  HorizontalAlignment="Left">
                                <Rectangle x:Name="Indicator" 
                                           Fill="{TemplateBinding Foreground}" 
                                           RadiusX="15" 
                                           RadiusY="15"/>
                                <Rectangle x:Name="Animation" 
                                           Fill="{TemplateBinding Foreground}" 
                                           RenderTransformOrigin="0.5,0.5" 
                                           RadiusX="15" 
                                           RadiusY="15"/>
                            </Grid>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Background" Value="#FF3D475B "/>
            <Setter Property="Foreground" Value="#FF24AFB2"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style>

VisualBrush применил здесь для того что бы срезать выпирающий за границы Border индикатор. Подскажите пожалуйста, как либо убрать исключение либо другим способом скрыть выпирающий индикатор?

Answer 1
<Grid.OpacityMask>
   <VisualBrush Visual="{Binding  Source={x:Reference Name=MaskBorder}}"/>
</Grid.OpacityMask>

Вот решение, если кому надо будет.

READ ALSO
Фиксированное положение элемента на форме

Фиксированное положение элемента на форме

Есть форма, которая представляет собой карту мира, в левом нижнем углу есть groupbox с информацией о странахЕсть функция масштабирования, при...

192
Telegram API CallBack + IIS

Telegram API CallBack + IIS

UPD2 Установив на сервер tshark, поймал ошибку такую

162
Проблема с определением &lt;Сколько пикселей до левого края страницы или верха&gt;

Проблема с определением <Сколько пикселей до левого края страницы или верха>

Знаю, есть getBoundingClientRectЭта штука даёт возможность определить расстояние до краёв на странице, относительно опорного тега

184