代码之家  ›  专栏  ›  技术社区  ›  aviv

来自其他控件的WPF样式触发器

  •  1
  • aviv  · 技术社区  · 14 年前

    我有一个图像,当用户将鼠标悬停在它上面时,我想制作它,它旁边的另一个图像将显示出来。

    下面的代码不起作用:

                <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" />
    

    我可以从另一个控件触发器设置另一个控件设置器属性吗?

    10倍。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Goblin    14 年前

    这样怎么样:

     <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}}" />
    

    然后使用这个值转换器:

    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();
        }
    }