不同 window 中的 WPF 镜像网格内容
WPF Mirror grid content in different window
我正在开发 WPF 软件。
在 Main Window 中,我有一个名为 "gridWindow" 的网格和一些按钮。
每个按钮点击事件实际上会分别调用不同的windows然后抓取window中的内容添加到MainWindow中的grid中
private void btnWelcome_Click(object sender, RoutedEventArgs e)
{
Window_Welcome childWindow = new Window_Welcome();
object PrjWindowContent = childWindow.Content;
childWindow.Content = null;
gridWindow.Children.Add(childWindow as UIElement);
}
然后我有另一个按钮需要打开一个名为 "BlackScreen" 的新 window 并镜像 Main Window 网格中的所有内容。
MainWindow 中网格内的内容总是根据系统时间或来自其他 MainWindow 控件的用户输入而变化。镜像 window 的内容也需要相应更改。
我了解到我可能需要视觉画笔来复制屏幕。
但是我就是没能做到。
这是我在 BlackScreen.xaml 中的代码。
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Black">
<Viewbox Name="vbox" Stretch="Uniform"><!--DataContext="{Binding ElementName=gridWindow}"-->
<Grid>
<Grid.Background>
<VisualBrush Stretch="Uniform" Visual="{Binding}">
</VisualBrush>
</Grid.Background>
</Grid>
</Viewbox>
</Grid>
</Grid>
这是一个简单示例,说明如何使用 VisualBrush
来 'mirror' 您的主要内容 Grid
(或 UI 的任何其他部分):
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Name="MainContent">
<Ellipse Fill="Red" />
<Rectangle Fill="Yellow" Margin="50" />
</Grid>
<Rectangle Grid.Row="1">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=MainContent}" />
</Rectangle.Fill>
</Rectangle>
</Grid>
这会产生以下结果:
我正在开发 WPF 软件。 在 Main Window 中,我有一个名为 "gridWindow" 的网格和一些按钮。 每个按钮点击事件实际上会分别调用不同的windows然后抓取window中的内容添加到MainWindow中的grid中
private void btnWelcome_Click(object sender, RoutedEventArgs e)
{
Window_Welcome childWindow = new Window_Welcome();
object PrjWindowContent = childWindow.Content;
childWindow.Content = null;
gridWindow.Children.Add(childWindow as UIElement);
}
然后我有另一个按钮需要打开一个名为 "BlackScreen" 的新 window 并镜像 Main Window 网格中的所有内容。 MainWindow 中网格内的内容总是根据系统时间或来自其他 MainWindow 控件的用户输入而变化。镜像 window 的内容也需要相应更改。
我了解到我可能需要视觉画笔来复制屏幕。 但是我就是没能做到。
这是我在 BlackScreen.xaml 中的代码。
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Black">
<Viewbox Name="vbox" Stretch="Uniform"><!--DataContext="{Binding ElementName=gridWindow}"-->
<Grid>
<Grid.Background>
<VisualBrush Stretch="Uniform" Visual="{Binding}">
</VisualBrush>
</Grid.Background>
</Grid>
</Viewbox>
</Grid>
</Grid>
这是一个简单示例,说明如何使用 VisualBrush
来 'mirror' 您的主要内容 Grid
(或 UI 的任何其他部分):
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Name="MainContent">
<Ellipse Fill="Red" />
<Rectangle Fill="Yellow" Margin="50" />
</Grid>
<Rectangle Grid.Row="1">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=MainContent}" />
</Rectangle.Fill>
</Rectangle>
</Grid>
这会产生以下结果: