xinzhiya001 2022-12-30 00:07
浏览 26
已结题

在WPF界面中请问下如何根据自定义条件来设置鼠标悬停时控件自动改变背景色?(语言-c#)


img

界面大概如上图所示,我想要达到的效果是当下面的输入文本框内=0时,鼠标悬停在任意框上时无动作。当下面输入文本框内=1时,鼠标悬停在在框1上面时,框1的背景色改变。当下面输入文本框内内=2时,鼠标悬停在在框1上面时,框1、框2的背景色改变。当下面输入文本框内内=3时,鼠标悬停在在框1上面时,框1、框2、框3的背景色改变。后面以此类推。

我知道应该是需要改变这个框的控件模板,我用过MultiDataTrigger,但我无法把鼠标悬停和下面鼠标悬停时富文本框背景色改变数量这个变量同时作为条件。请教下大家我应该如何实现这个方案,非常感谢!

XAML代码如下:

<Window x:Class="RichTBoxMouseOverDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:RichTBoxMouseOverDemo"
        mc:Ignorable="d"
        Title="RichTBoxMouseOverDemo" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <RichTextBox x:Name="RTBox00"
                         
                         Grid.Row="0" Grid.Column="0" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox01"
                         Grid.Row="0" Grid.Column="1" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox02"
                         Grid.Row="0" Grid.Column="2" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox03"
                         Grid.Row="0" Grid.Column="3" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox04"
                         Grid.Row="0" Grid.Column="4" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox10"
                         Grid.Row="1" Grid.Column="0" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox11"
                         Grid.Row="1" Grid.Column="1" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox12"
                         Grid.Row="1" Grid.Column="2" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox13"
                         Grid.Row="1" Grid.Column="3" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox14"
                         Grid.Row="1" Grid.Column="4" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox20"
                         Grid.Row="2" Grid.Column="0" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox21"
                         Grid.Row="2" Grid.Column="1" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox22"
                         Grid.Row="2" Grid.Column="2" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox23"
                         Grid.Row="2" Grid.Column="3" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox24"
                         Grid.Row="2" Grid.Column="4" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox30"
                         Grid.Row="3" Grid.Column="0" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox31"
                         Grid.Row="3" Grid.Column="1" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox32"
                         Grid.Row="3" Grid.Column="2" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox33"
                         Grid.Row="3" Grid.Column="3" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox34"
                         Grid.Row="3" Grid.Column="4" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox40"
                         Grid.Row="4" Grid.Column="0" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox41"
                         Grid.Row="4" Grid.Column="1" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox42"
                         Grid.Row="4" Grid.Column="2" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox43"
                         Grid.Row="4" Grid.Column="3" Background="LightSteelBlue"/>
            <RichTextBox x:Name="RTBox44"
                         Grid.Row="4" Grid.Column="4" Background="LightSteelBlue"/>
        </Grid>
        <StackPanel Grid.Row="1" HorizontalAlignment="Left" Orientation="Horizontal">
            <TextBlock Text="鼠标悬停时富文本框背景色改变数量" FontSize="25" />
            <TextBox MinWidth="70" BorderBrush="Orange" FontSize="25" Name="tbox_count"/>
        </StackPanel>
    </Grid>
</Window>

对应的.CS代码如下:

using System.Windows;


namespace RichTBoxMouseOverDemo
{
    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        //鼠标悬停时富文本框背景色改变数量的值
        //最小0,即鼠标悬停时不改变背景色
        //最大4
        public int Count_MouseoverBackgroundChanged=0;
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月7日
    • 创建了问题 12月30日

    悬赏问题

    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100