2009-12-16 5 views
0

У меня есть настраиваемый тип управления, например: <Grid> ... </Grid> и свойство Grid.BitmapEffect. Как я могу изменить BitmapEffetc в этом элементе управления (сетке) через код C# (например, на событие)?Как изменить BitmapEffect в пользовательском управлении WPF с помощью кода C#

Пример кода - часть таможенного контроля:

[...] 
<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 
} 

ответ

1

ОК, у меня это есть! Я добавил «GlowSize» DepencyProperty и просто изменил размер свечения через него. :) Работает отлично.

2
myGrid.BitmapEffect = null; 

PS: Обратите внимание, что BitmapEffect считается устаревшим и при 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> 

Codebehind:

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 сетки , а не BitmapEffect Control1.

+0

Это не работает. – Kamilos

+0

Я просто попробовал, и все работает отлично. Можете ли вы привести краткий пример, чтобы воспроизвести проблему? – Heinzi

+0

Хорошо, смотрите выше. – Kamilos

 Смежные вопросы

  • Нет связанных вопросов^_^