我的设置窗口中需要一个矩形来显示主窗口的缩小版本。这是我现在所使用的非工作代码。是否有可能做我想做的事情?
<Rectangle.Fill>
<VisualBrush Stretch="Uniform" Visual="{Binding ElementName=local:MainWindow}" />
</Rectangle.Fill>
答案 0 :(得分:7)
是的,但不是纯XAML而不是使用ElementName。相反,您需要将对主窗口的引用传递到设置窗口。然后,您可以将VisualBrush.Visual绑定到该引用。
作为简化示例,在创建设置窗口时,您可以将其DataContext设置为主窗口:
// MainWindow.xaml.cs
SettingsWindow w = new SettingsWindow { DataContext = this };
w.Show();
然后您可以通过SettingsWindow访问MainWindow {Binding}
(因为MainWindow现在是SettingsWindow的DataContext,而{Binding}
是指DataContext):
<!-- SettingsWindow.xaml -->
<Rectangle.Fill>
<VisualBrush Stretch="Uniform" Visual="{Binding}" />
</Rectangle.Fill>
在实践中,您可能不希望将主窗口对象作为DataContext传递,因为这对于一个乐器来说太过钝,但希望这能为您提供这个想法。