界面大概如上图所示,我想要达到的效果是当下面的输入文本框内=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();
}
}
}