我需要在 WPF 中有一些镜像对象。我有一个包含一些内容的画布,我需要 50 个视觉克隆,如果我在源代码上修改某些内容,它应该在这些克隆中更新。我知道通过将 VisualBrush 的 Visual 绑定到元素在 XAML 中很容易做到这一点,但似乎可以从代码中做到这一点。
任何人都可以帮忙吗?
我需要在 WPF 中有一些镜像对象。我有一个包含一些内容的画布,我需要 50 个视觉克隆,如果我在源代码上修改某些内容,它应该在这些克隆中更新。我知道通过将 VisualBrush 的 Visual 绑定到元素在 XAML 中很容易做到这一点,但似乎可以从代码中做到这一点。
任何人都可以帮忙吗?
好的,同时我找到了解决方案(通过 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>
也许你会发现这很有用,丹尼尔
Take a look at this example of creating an attached behavior. You could use the behavior and just create and attach an instance using code, or you could use the code in the example directly to create the reflections.
这是我很久以前写的一个在代码中构建反射效果的控件:
http://www.nbdtech.com/Blog/archive/2007/11/21/WPF-Reflection-Control.aspx
如果您只需要一个简单的反射,这里有一个链接到教程的帖子,更有趣的是,您可以使用现成的控件(在 Infragistics.Toybox.dll 中)——不过,请务必先检查它的许可证,我不知道它的状态是什么。
http://blogs.infragistics.com/blogs/grant_hinkson/archive/2007/01/14/wpf-reflection-control.aspx