我在C#中编写了以下代码来创建一个作为StackPanel子级的按钮:'按钮myButton =新按钮();//所有按钮内容(背景、文本...)。添加(我的按钮);'但是,就像每个按钮一样,它在每次鼠标移过或者我点击它的时候都会高亮显示。有没有什么方法可以在一个简单的代码中改变它(我还是C#新手),可以去除高亮显示。我不知道如何做到这一点。我没有看到任何解释这一点的东西,我能找到的唯一代码是在XAML,我不理解他们,所以不能把他们翻译成C#。
vyswwuz21#
我看了几个答案,没有看到任何我喜欢的。wpf控件是看不见的,这意味着它们有固定的行为,但没有特定的外观。你可以将wpf控件重新模板化为几乎任何你可以在xaml中描述的东西。许多wpf控件都有相当复杂的模板。这里有一种方法来模板化一个按钮。我已经把这个样式放在我窗口的资源里了。通常这样的样式在资源字典里,而资源字典合并在app.xaml里。
<Window.Resources> <Style x:Key="NoMouseOverButtonStyle" TargetType="{x:Type Button}"> <Setter Property="SnapsToDevicePixels" Value="true" /> <Setter Property="OverridesDefaultStyle" Value="true" /> <Setter Property="BorderBrush" Value="LightGray"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" > <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <Button Style="{StaticResource NoMouseOverButtonStyle}" Content="This is my Button" Click="Button_Click" HorizontalAlignment="Left" VerticalAlignment="Top" /> </Grid> </Window>
按钮将样式作为资源引用。该样式设置了一些默认值,因此按钮有一个边框,您可以看到,但覆盖。contentpresenter很关键,因为无论你为按钮做什么,它都会出现。如果我在一个按钮上设置了一个实际的值,那么它将覆盖样式。
<Button Style="{StaticResource NoMouseOverButtonStyle}" Content="This is my Button" Click="Button_Click" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="Red" />
在按钮上显示红色边框。浅灰色边框比按钮的默认边框简单。你可以复制这个。也许这会是一个有趣的学习练习。查找msdn上的按钮模板。谷歌:"wpf按钮模板msdn"你看,打起精神来,这很复杂。看到按钮边框笔刷在模板中硬编码了吗?更改上面的样式,使其具有相同的效果。线索:
<Setter.Value>
1条答案
按热度按时间vyswwuz21#
我看了几个答案,没有看到任何我喜欢的。
wpf控件是看不见的,这意味着它们有固定的行为,但没有特定的外观。你可以将wpf控件重新模板化为几乎任何你可以在xaml中描述的东西。许多wpf控件都有相当复杂的模板。
这里有一种方法来模板化一个按钮。
我已经把这个样式放在我窗口的资源里了。通常这样的样式在资源字典里,而资源字典合并在app.xaml里。
按钮将样式作为资源引用。该样式设置了一些默认值,因此按钮有一个边框,您可以看到,但覆盖。
contentpresenter很关键,因为无论你为按钮做什么,它都会出现。
如果我在一个按钮上设置了一个实际的值,那么它将覆盖样式。
在按钮上显示红色边框。
浅灰色边框比按钮的默认边框简单。
你可以复制这个。也许这会是一个有趣的学习练习。
查找msdn上的按钮模板。
谷歌:"wpf按钮模板msdn"
你看,打起精神来,这很复杂。
看到按钮边框笔刷在模板中硬编码了吗?
更改上面的样式,使其具有相同的效果。
线索: