我是WPF新手的经验丰富的开发人员。我很欣赏WPF组件的所有灵活性,但这种灵活性让我有点麻烦。
具体来说,我想创建一个对话框。当我在C ++ / MFC或C#/ Win Forms中执行此操作时,我的文本框和文本框字体自动适合系统对话框。
但是在WPF中,我必须对文本框高度和的字体大小进行硬编码。这显然意味着:
我必须猜测哪种字体大小最符合用户对话框的系统字体设置,而且我的字体不会适应每个用户'系统设置。
更糟糕的是,我还要猜测当前字体的最佳文本框大小。这在其他平台上一直是自动的。
我只是想知道经验丰富的WPF开发人员如何处理对话框中的文本框和字体大小。
修改
换句话说,我希望我的文本框能够使用Windows API调用GetStockObject(SYSTEM_FONT)
返回的字体。这是WPF直接支持吗?
答案 0 :(得分:1)
您可以将控件的大小设置为“自动”,如下所示:<TextBlock Heigh="Auto" Text="Foobar"/>
,控件的高度将适应内容。
这也适用于任何控件上的任何高度或宽度属性。
希望我帮忙;)
答案 1 :(得分:1)
我很难理解您的问题,主要是因为WPF比MFC或Winforms更适合 用于您似乎要问的场景。
- 我必须猜测哪种字体大小最符合用户对话框的系统字体设置,而且我的字体不会适应每个用户&#39;系统设置。
醇>
WPF使用与设备无关的指标。特别是,WPF像素总是每标称英寸96。当然,根据用户设置,WPF的实际大小&#34;英寸&#34;可能多于或少于一英寸。但这些是用户控制下的设置,专门用于进行此类缩放。
WPF模型的一大优势在于,与Winforms不同,无论缩放如何,所有内容的相对布局都保持不变。在Winforms中,不同的东西会有不同的缩放,导致换行发生在不同的地方,文本被截断等等。
- 更糟糕的是,我还要猜测当前字体的最佳文本框大小。这在其他平台上一直是自动的。
醇>
WPF Window
类具有SizeToContent
属性。如果将其设置为Both
,则窗口将自行调整大小以准确包含您放入其中的任何内容。这不是你想要的吗?
如果以上内容无法解决您的具体情况,请通过提供a good, minimal, complete code example来帮助我们了解您的情况,How to change the Content of a <textarea>
with Javascript可以清楚地显示您遇到的问题,并准确说明代码的作用以及与代码的不同之处你想要什么。