C# WPF按钮背景鼠标输入并保持未按预期工作

C# WPF按钮背景鼠标输入并保持未按预期工作,c#,wpf,xaml,C#,Wpf,Xaml,我有一个WPF按钮,如下所示: <Page.Resources> <ImageBrush x:Key="black_pane_normal" ImageSource="/Images/TroubleShooting/black_pane_clear.png" /> </Page.Resources> <Button x:Name="ButtonBlackPane" Background="{StaticResource black_pane

我有一个WPF按钮,如下所示:

<Page.Resources>
      <ImageBrush x:Key="black_pane_normal" ImageSource="/Images/TroubleShooting/black_pane_clear.png" />
</Page.Resources>

<Button x:Name="ButtonBlackPane" Background="{StaticResource black_pane_normal}" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="157" Height="136" MouseEnter="ButtonBlackPane_MouseEnter" MouseLeave="ButtonBlackPane_MouseLeave" Click="ButtonBlackPane_Click" RenderTransformOrigin="0.533,0.281" Margin="189,199,0,0"/>
我的第一个问题是,我的图像没有填充整个按钮背景,我如何让它填充


我的第二个问题是,当鼠标进入按钮时,正确的背景图像会显示一会儿,然后默认的灰色按钮图像会显示,我的图像会消失,我该如何解决这个问题呢?

首先,首先使用静态资源设置背景,然后每次使用代码将其设置为新的ImageBrush对象,这不是一个好的做法。查看FindResource方法()以在代码隐藏中使用您的资源

其次,您应该使用样式和触发器来修改控件的外观,这取决于例如鼠标悬停状态。有一个名为IsMouseOver的属性,您可以使用它。以下是一个例子:

<Page.Resources>
    <Style TargetType="Button" x:Key="myButtonStyle">
        <Setter Property="Foreground" Value="Red" />
        <Setter Property="FontSize" Value="12" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Foreground" Value="Blue" />
                <Setter Property="Cursor" Value="Hand"/>
                <Setter Property="FontSize" Value="16" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Page.Resources>

<Button Width="200" Height="100" Style="{StaticResource myButtonStyle}">Hello, World!</Button>

你好,世界!
第三,由于WPF按钮的默认模板,在鼠标悬停时无法直接更改其背景。这里讨论并解决了这个问题: 如果您想了解有关设置WPF控件样式以及如何使用默认模板的更多信息,请查看以下内容:

<Page.Resources>
    <Style TargetType="Button" x:Key="myButtonStyle">
        <Setter Property="Foreground" Value="Red" />
        <Setter Property="FontSize" Value="12" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Foreground" Value="Blue" />
                <Setter Property="Cursor" Value="Hand"/>
                <Setter Property="FontSize" Value="16" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Page.Resources>

<Button Width="200" Height="100" Style="{StaticResource myButtonStyle}">Hello, World!</Button>