使用触发器为UIElement动态添加发光效果
问题描述:
我对wpf很感兴趣,并且寻找很好的教程来帮助更好地理解触发器,但是没有太多运气。所以我想我会在这里寻求帮助。这里是我试图做的,我有一个ScrollViewer,有一个堆栈面板,在我浏览媒体文件夹后面的代码中,并使用foreach循环将MediaElements添加到堆栈面板,我想要做的是当用户将鼠标悬停在一个这些,我希望它焕发它的下面,我告诉触发器去,所以这里的方式是我迄今为止使用触发器为UIElement动态添加发光效果
的foreach
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>
答
这是一个容易得多XAML中做,试图操纵这个东西在代码中是一个头痛的问题。
there is some code in this unrelated article关于项目控件生成器,当在列表框中选择项目时将添加发光。 (稍微多于一半的下降)
here is the ms example它使用触发器发光任何有焦点的东西。 (这是一个更容易理解)
我会做直接了XAML,但不幸的是我使用foreach来循环所有的项目。 – nagates 2009-12-17 05:16:29