0

我是 wpf 的新手,正在寻找好的教程来帮助更好地理解触发器,但我运气不佳。所以我想我会在这里寻求帮助。这是我想要做的,我有一个具有堆栈面板的 ScrollViewer,在我浏览媒体文件夹并使用 foreach 循环将 MediaElements 添加到堆栈面板的代码中,我想要做的是当用户悬停在一个其中,我希望它在它下面发光,我被告知触发器是要走的路,所以这是我到目前为止所拥有的

前锋

                MediaElement newVideoPreview = new MediaElement(); 
                newVideoPreview.Width = 125;
                newVideoPreview.Stretch = Stretch.Uniform; 
                newVideoPreview.Margin = new Thickness(5, 5, 5, 5); 
                newVideoPreview.Volume = 0;

                Trigger trig = new Trigger();
                trig.Property = IsMouseOverProperty;
                trig.Value = true;
                Style style = new Style();
                style.TargetType = newVideoPreview.GetType();
                style.Triggers.Add(trig);
                Setter set  = new Setter();

                OuterGlowBitmapEffect glow = new OuterGlowBitmapEffect();
                glow.GlowColor = Color.FromRgb(0, 0, 205);
                glow.GlowSize = 10;
                set.Value = glow; // <- Crash house
                set.Property = EffectProperty;
                style.Setters.Add(set);
                newVideoPreview.Style = style;

如您所见,当我尝试设置 setter.value 时出现无效参数异常,我正在寻找有关如何解决此问题或做得更好或更好的教程的建议...感谢您的帮助

ps 我正在使用 VS2010 beta 2

更新我也尝试过这个dosent工作....

<UserControl x:Class="WiiDSUKiosk.WiiFriendlyScrollViewer"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type UIElement}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="BitmapEffect">
                        <Setter.Value>
                            <OuterGlowBitmapEffect GlowColor="Navy" GlowSize="10"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <ScrollViewer Name="wiiFriendlyScrollViewer" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden"
                  MouseMove="wiiFriendlyScrollViewer_MouseMove" >

        <StackPanel Name="stackPanelContent" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden">
        </StackPanel>
    </ScrollViewer>
</Grid>

4

2 回答 2

3

我也花了几个小时在这个上,只是为了发现位图效果在 vs 2010 中已经过时了。这个答案基于这篇文章:msdn 论坛

于 2011-04-01T13:19:27.347 回答
2

这在 xaml 中要容易得多,试图在代码中操作这些东西是一件令人头疼的事情。

在这篇不相关的文章中有一些关于项目控件生成器的代码,当在列表框中选择项目时,它们会添加发光。(下降了一半多一点)

这是 ms 示例,它使用触发器来点亮任何有焦点的东西。(这更容易理解)

于 2009-12-17T04:51:53.267 回答