Как сделать эффект отражения в WPF? (из кода) - PullRequest
2 голосов
/ 17 февраля 2010

Мне нужно иметь несколько зеркальных объектов в WPF. У меня есть Canvas с некоторым содержанием, и мне нужно 50 визуальных клонов, и если я изменю что-то в источнике, он должен быть обновлен в этих клонах. Я знаю, что это легко сделать в XAML, привязав визуальный элемент VisualBrush к элементу, но может, похоже, сделать это из кода.

Кто-нибудь может помочь?

Ответы [ 4 ]

3 голосов
/ 18 февраля 2010

Хорошо, пока что я нашел решение (через Sese).Если кому-то интересно, найдите его ниже:

VisualBrush VisualBrush1 = new VisualBrush();
VisualBrush1.TileMode = TileMode.FlipXY;
VisualBrush1.Viewport = new Rect(0.5, 0.5, 0.5, 0.5);

Binding bb = new Binding { ElementName = "button1" };
BindingOperations.SetBinding(VisualBrush1,VisualBrush.VisualProperty, bb);
rectangle1.Fill = VisualBrush1;

и в XAML:

<Grid>
        <Button Height="39"
                Margin="82,20,87,0"
                Name="button1"
                VerticalAlignment="Top">Button</Button>
        <Rectangle Margin="82,56,87,0"
                   Name="rectangle1"
                   Height="37"
                   VerticalAlignment="Top">            
        </Rectangle>
    </Grid>

Может быть, вы найдете это полезным, Даниэль

1 голос
/ 18 февраля 2010

Вот элемент управления, который я написал давно, который создает эффект отражения в коде:

http://www.nbdtech.com/Blog/archive/2007/11/21/WPF-Reflection-Control.aspx

1 голос
/ 18 февраля 2010

Если все, что вам нужно, это простое отражение, вот пост, содержащий ссылку на учебник и, что более интересно, готовый элемент управления, который вы можете просто использовать (в Infragistics.Toybox.dll) - обязательно сначала проверьте его лицензия, я не знаю, каков ее статус.

http://blogs.infragistics.com/blogs/grant_hinkson/archive/2007/01/14/wpf-reflection-control.aspx

1 голос
/ 17 февраля 2010

Взгляните на этот пример создания прикрепленного поведения. Вы можете использовать поведение и просто создать и присоединить экземпляр, используя код, или вы можете использовать код в примере непосредственно для создания отражений.

...