WPF 如何把子窗口放到主窗口的Panel中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 如何把子窗口放到主窗口的Panel中?相关的知识,希望对你有一定的参考价值。
设计的是个窗体,点主窗体的左侧按钮,右侧会出现一个新界面,左侧有很多按钮,所以右侧就会相应有很多的界面,我打算把子窗体当成界面,放到主窗体的StackPanel 中,请问如何实现?谢谢~
WPF应该是不支持MDI的。要实现这样的效果,除非你自己制作一个看起来像是窗口的控件。 参考技术A 你winform实现的时候也是UserContorl 吧,难道你在winform里也是把form添加到panel中了吗?追问Winform 可以把子form 加入到Panel, 以下代码可以实现
this.panel.Controls.Clear();
ChildWindow cw = new ChildWindow();
cw.TopLevel = false;
cw.Show();
this.panel.Controls.Add(cw);
以前Winform经常这么做,很好实现,查了很多感觉WPF貌似没有简单实现的方法,有人说用 UserContorl 就可以,请问知道这种方法吗?
追答UserContorl用户控件,自己写得吧。这个不了解,不要意思帮不了你咯。
本回答被提问者采纳如果它比 WPF XAML 中的窗口大,如何缩放字体大小以适应窗口?
【中文标题】如果它比 WPF XAML 中的窗口大,如何缩放字体大小以适应窗口?【英文标题】:How to scale font size to fit the window if it's larger than the window in WPF XAML? 【发布时间】:2021-10-28 16:02:24 【问题描述】:不确定这在 XAML 中是否很难做到,但我有一些 TextBlock,我使用固定字体大小在主窗口顶部显示。
如果这比主窗口大,它会调整主窗口的大小。我不想要这个。到目前为止我已经尝试过了,但无法阻止主窗口水平调整大小。
如果 TextBlock 不适合主窗口宽度,我想要调整它的大小。主窗口宽度是动态的,所以我不能使用固定的单位值。
代码如下:
<Viewbox StretchDirection="DownOnly">
<Grid Name="InfoTextOverlay" Visibility="Hidden" HorizontalAlignment="Center">
<TextBlock Text="Binding InfoText, ElementName=MyMainWindow" Foreground="White" FontSize="40" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Viewbox>
【问题讨论】:
这能回答你的问题吗? How to automatically scale font size for a group of controls? 有/没有Viewbox
你的代码不会为我调整主窗口的大小。将窗口的 SizeToContent
属性设置为 Manual
,如果不是。
@Maria,我需要主窗口来适应数据网格控件,所以它需要始终适应其内容,而不是顶部显示的文本块。
@Squirrel.98:谢谢,我今天去看看。
@Squirrel.98:我刚刚检查过,但它似乎覆盖复杂。不知道如何应用于我的案例,因为他有多个文本等。而我只想使用我选择的固定字体大小,除非它不适合我的窗口,然后调整大小以适应一些边距。
【参考方案1】:
如果您想避免自动宽度,请使用 TextWrapping="Wrap"。
或
如果您需要自动调整文本块的大小,只需删除 FontSize 属性
【讨论】:
以上是关于WPF 如何把子窗口放到主窗口的Panel中?的主要内容,如果未能解决你的问题,请参考以下文章
WPF Grid Panel.ZIndex 设置为 1 在另一个窗口的情况下不起作用