이 this post에 따르면, 그 화려한 애니메이션과를 제거하려면, 당신은 당신의 Button
의 ControlTemplate
을 재정의 할 필요 해요 내장되어 있습니다 :
이 내 코드입니다. 다행히도 그렇게 어렵지 않습니다. 나는 this post을 소스 자료로 사용하여 다음과 같은 아이디어를내는 Style
을 제안했습니다.
<Style x:Key="MouseOverButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ControlTemplate.Resources>
<Style x:Key="ShadowStyle">
<Setter Property="Control.Foreground" Value="LightGray" />
</Style>
</ControlTemplate.Resources>
<Border Name="border" BorderThickness="1" Padding="4,2" BorderBrush="DarkGray" CornerRadius="3" Background="{TemplateBinding Background}">
<Grid >
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Name="contentShadow" Style="{StaticResource ShadowStyle}">
<ContentPresenter.RenderTransform>
<TranslateTransform X="1.0" Y="1.0" />
</ContentPresenter.RenderTransform>
</ContentPresenter>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Name="content"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Beige" />
</Trigger>
</Style.Triggers>
</Style>
업데이트 : 당신이 코드에서 Style
적용에 죽은 세트를이야 그리고 당신은 (그것을 할 아마 더 좋은 방법)을 ResourceDictionary
을 사용하지 않으려면 , 당신은 동적으로 Style
을로드 할 수 있습니다 XamlReader.Load
:
const string xaml = @"
<Style xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
TargetType='Button'>
<Setter Property='Template'>
<!--- Omitted For Clarity --->
</Setter>
<Style.Triggers>
<Trigger Property='IsMouseOver' Value='True'>
<Setter Property='Background' Value='Beige' />
</Trigger>
</Style.Triggers>
</Style>";
var encoding = new ASCIIEncoding();
var bytes = encoding.GetBytes(xaml);
var style = (Style)XamlReader.Load(new MemoryStream(bytes));
Button1.Style = style;
나는 이것을 xaml을 통해 할 수 있지만 C#을 통해 할 수는 없다는 것을 알고있다. ??? – Luiscencio
리소스 사전에 스타일을 넣은 다음 필요에 따라 단추에 적용 할 수 있습니다. –
+1 업데이트를 시도해 보겠습니다. 유익한 감사가 나타납니다. – Luiscencio