WPF样式从另一个控件触发

时间:2010-07-28 09:51:34

标签: wpf xaml wpf-controls styles setter

我有一个图像,当用户将鼠标悬停在其上时,我想要显示它,将显示旁边的另一个图像。

以下代码不起作用:

            <Image Source="volumen.png">
                <Image.Style>
                    <Style>
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="bar_volume" Property="Visibility" Value="Visible" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Image.Style>
            </Image>
            <Image Source="volumen_bar.png" Name="bar_volume" Visibility="Hidden" />

任何想法如何从另一个控件触发器设置另一个控件setter属性?

10倍。

1 个答案:

答案 0 :(得分:4)

这样怎么样:

 <UserControl.Resources>       
      <local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
 </UserControl.Resources>       
 <Image Name="firstImage" Source="volumen.png"/>
 <Image Source="volumen_bar.png" Name="bar_volume" Visibility="{Binding IsMouseOver,ElementName=firstImage, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />

然后使用此valueconverter:

public class BoolToVisibilityConverter:IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
         return (bool)value ? Visibility.Visible : Visibility.Hidden;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
         throw new NotSupportedException();
    }
}