【发布时间】:2015-01-31 17:48:31
【问题描述】:
我目前正在编写一个小应用程序,但我陷入了以下几点:
我的按钮在代码中有几个参数,我想在单独的文本块中显示这些值。
当我将鼠标悬停在按钮上时是否有可能更改文本块的可见性,以便参数仅在悬停在按钮上时可见?
【问题讨论】:
标签: c# wpf hover visibility
我目前正在编写一个小应用程序,但我陷入了以下几点:
我的按钮在代码中有几个参数,我想在单独的文本块中显示这些值。
当我将鼠标悬停在按钮上时是否有可能更改文本块的可见性,以便参数仅在悬停在按钮上时可见?
【问题讨论】:
标签: c# wpf hover visibility
XAML 解决方案:
<Grid>
<Grid.Resources>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="Foo" Visibility="{Binding IsMouseOver, ElementName=Foo, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<TextBlock Grid.Row="1" Text="Bar" Visibility="{Binding IsMouseOver, ElementName=Bar, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Button x:Name="Foo" Grid.Column="1" Content="Foo"/>
<Button x:Name="Bar" Grid.Row="1" Grid.Column="1" Content="Bar"/>
</Grid>
converters 命名空间声明为:
xmlns:converters="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"
【讨论】:
当然有,使用按钮MouseEnter 事件。像下面这样的东西可以正常工作:
button1_MouseEnter(object sender, EventArgs e)
{
textBlock1.Visibility = Visibility.Visible;
}
然后要将其隐藏,请使用MouseLeave 事件:
button1_MouseLeave(object sender, EventArgs e)
{
textBlock1.Visibility = Visibility.Hidden;
}
【讨论】:
<Button Name="Foo" Content="SomeContent" MouseEnter="button1_MouseEnter"/>