IsDefault = "True"속성이있는 단추에 테두리 브러시 색상을 입력하려고하면 테두리가 변경되지 않고 테두리가 파란색 테두리로 유지됩니다 IsDefault 속성WPF XAML : IsDefault = "True"인 단추의 테두리 브러쉬
IsDefault = "True"를 제거하면 테두리 브러시 색상이 적용됩니다.
단추를 기본값으로 사용하고 테두리 색을 사용자 지정하는 방법이 있습니까?
IsDefault = "True"속성이있는 단추에 테두리 브러시 색상을 입력하려고하면 테두리가 변경되지 않고 테두리가 파란색 테두리로 유지됩니다 IsDefault 속성WPF XAML : IsDefault = "True"인 단추의 테두리 브러쉬
IsDefault = "True"를 제거하면 테두리 브러시 색상이 적용됩니다.
단추를 기본값으로 사용하고 테두리 색을 사용자 지정하는 방법이 있습니까?
방법 항목 :
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="Blue" />
</Style>
</Window.Resources>
방법 2 : 또 다른 방법은에 x:Key="yourButtonStyle"
을 추가하는 것입니다 단지 모든 버튼에 해당 스타일을 적용하여 Window.Resources
의 스타일을 정의한다이 작업을 수행하는 가장 좋은 방법은
<Window.Resources>
<Style x:Key="yourButtonStyle" TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="Blue" />
</Style>
</Window.Resources>
:
Style
요소와 당신이
Style
속성에 원하는 버튼에 할당
<Button Style="{StaticResource yourButtonStyle}"/>
문제는 단추 모양이 경우에 따라 변경되는 ControlTemplate
입니다.
<Style x:Key="ButtonFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F3F3F3" Offset="0"/>
<GradientStop Color="#EBEBEB" Offset="0.5"/>
<GradientStop Color="#DDDDDD" Offset="0.5"/>
<GradientStop Color="#CDCDCD" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="ButtonNormalBorder" Color="#FF707070"/>
<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
<Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Themes:ButtonChrome x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" RenderDefaulted="{TemplateBinding IsDefaulted}" SnapsToDevicePixels="true">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Themes:ButtonChrome>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="RenderDefaulted" TargetName="Chrome" Value="true"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="true">
<Setter Property="RenderPressed" TargetName="Chrome" Value="true"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#ADADAD"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
관련 부분은 아마있는
<Themes:ButtonChrome x:Name="Chrome"
...
RenderMouseOver="{TemplateBinding IsMouseOver}"
RenderPressed="{TemplateBinding IsPressed}"
RenderDefaulted="{TemplateBinding IsDefaulted}"
... >
및 컨트롤 템플릿은
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="RenderDefaulted" TargetName="Chrome" Value="true"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="true">
<Setter Property="RenderPressed" TargetName="Chrome" Value="true"/>
</Trigger>
를 트리거 특정 사례에 대해 실제로 다른 국경을 원한다면 IsDefault
그러나 포커스, 마우스 오버 및 기타 상태에 맞게 모든 테두리를 변경하려면 RenderDefaulted="{TemplateBinding IsDefaulted}"
대신 Themes:ButtonChrome
에 RenderDefaulted="False"
을 설정하여 컨트롤 템플릿을 수정할 수 있습니다.
모든 버튼에 스타일을 적용하려면 방법 1에서'x : Key '를 제거해야합니다. TargetType은 항상 필요합니다! –
@ Felix D. 정정 해 주셔서 고쳐주었습니다. - 고쳐주었습니다. – JohnChris
행운을 빕니다./여전히 기본 파란색 인 채로 남아 있습니다. – NiallMitch14