如何通过C#代码更改自定义WPF控件中的BitmapEffect
问题描述:
我有一个自定义控件类型,如:<Grid> ... </Grid>
和Grid.BitmapEffect属性。如何通过C#代码(例如事件)在此控件(网格)中更改BitmapEffetc?如何通过C#代码更改自定义WPF控件中的BitmapEffect
代码示例 - 自定义控件的一部分:
[...]
<Grid Background="#FFE5AA">
<Grid.RowDefinitions>
<RowDefinition Height="62*"/>
<RowDefinition Height="15*"/>
<RowDefinition Height="23*"/>
</Grid.RowDefinitions>
<Grid.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="#459E5A" GlowSize="13" Noise="0" Opacity="0.9" />
</Grid.BitmapEffect>
<Border Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" BorderBrush="#F5B903" BorderThickness="1,1,1,1" >
</Border>
[...]
然后在Window.xaml:
<controls:MyControl Name="Control1" Cursor="Hand" MouseDown="Control1_MouseDown" />
然后在C#:
private void Control1_MouseDown(object sender, MouseButtonEventArgs e)
{
//there i want to change Control1.BitmapEffect
}
答
好的,我明白了!我添加了一个DepencyProperty'GlowSize',并通过它简单地改变发光的大小。 :)完美的作品。
答
myGrid.BitmapEffect = null;
PS:请注意, BitmapEffect被认为是过时的,并且th应该使用Effect。
下面是根据您的样本为例,其工作完全正常(在这里我的机器上):正如我在网格内单击很快,效果消失。
XAML:
<Window x:Class="WpfCsApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid Background="#FFE5AA" Margin="10" MouseDown="Grid_MouseDown" x:Name="myGrid">
<Grid.RowDefinitions>
<RowDefinition Height="62*"/>
<RowDefinition Height="15*"/>
<RowDefinition Height="23*"/>
</Grid.RowDefinitions>
<Grid.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="#459E5A" GlowSize="13" Noise="0" Opacity="0.9" />
</Grid.BitmapEffect>
<Border Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" BorderBrush="#F5B903" BorderThickness="1,1,1,1" >
<TextBlock>Test</TextBlock>
</Border>
</Grid>
</Window>
代码隐藏:
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
}
private void Grid_MouseDown(object sender, MouseButtonEventArgs e) {
myGrid.BitmapEffect = null;
}
}
在你的榜样,你写的://there i want to change Control1.BitmapEffect
。请注意,您需要更改网格的BitmapEffect,而不是Control1的BitmapEffect。
它不起作用。 – Kamilos 2009-12-16 13:23:51
我刚试过,它工作正常。你能提供一个简短的例子来重现这个问题吗? – Heinzi 2009-12-16 14:39:30
好的,看上面。 – Kamilos 2009-12-16 14:51:07