问题标签 [sizetocontent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
72912 浏览

.net - 调整大小后如何使用 Expander 保持 WPF 窗口的大小

我有一个带有SizeToContent="Height". 此窗口包含一个<Expander />显示最近活动列表的窗口。我想要的是当扩展器展开时,窗口的大小会成比例地增长。隐藏时,窗口再次按比例调整大小。如果窗口被调整大小,扩展器和它包含的列表视图应该增长以使用新空间。(不要介意那里的颜色可以帮助我解决这个问题):

普通视图

替代文字 http://www.deploylx.com/so/wpfexpander/Open.png

折叠

替代文字 http://www.deploylx.com/so/wpfexpander/Closed.png

调整到新空间

替代文字 http://www.deploylx.com/so/wpfexpander/Expanded.png

到目前为止,这很好用。<Expander />调整窗口大小后折叠时出现问题。列表视图并没有再次折叠,而是简单地隐藏了:

调整大小后折叠

替代文字 http://www.deploylx.com/so/wpfexpander/Collapsed.png

我的直觉告诉我,Height当窗口调整大小并因此覆盖SizeToContent属性时,正在设置窗口的 。那么,如何让窗口在调整大小后保持其大小以适应内容行为?

当前 XAML:

更新:我尝试监听扩展器的 Collapsed 事件并重置 WindowsSizeToContent属性。这几乎可以工作。它会导致它再次折叠窗口,但当再次展开时,它会回到原来的 100 像素高度。虽然存储和捕获这些信息是可行的,但它闻起来很老套,而且容易出错。

0 投票
4 回答
5436 浏览

wpf - wpf中心子窗口不适用于sizetocontent

如果我设置SizeToContentWidthAndHeight,则WindowStartupLocation="CenterOwner"无法正常工作。而不是新窗口的中心位于其父所有者的中心,它看起来更像是子窗口的左上角位于父窗口的中心。如果我删除SizeToContent,那么一切都好。怎么了?

0 投票
1 回答
4114 浏览

c# - 在呈现之前确定 SizeToContent WPF 窗口的大小

我的 WPF 应用程序中有一个窗口,有时会显示。当它显示时,它会以动画形式淡入,当它关闭时,它会淡出。没什么特别的,只是一个修改不透明度的故事板。实际上,窗口从未真正关闭,不透明度只是淡出到 0,直到它再次显示。

此窗口是一个信息窗口,并不总是显示相同的内容。它的大小适合内容(宽度和高度)并且在这方面效果很好。用户选择要显示的屏幕的基本区域(TopLeft、TopRight、Center、BottomLeft、BottomRight)。

在窗口淡入之前,内容被更新。因为窗口的大小是根据内容调整的,所以它的大小会增加或减小。宽度和高度可以改变。

在定位窗口时,比如说,在右下角,我只需取屏幕的工作区域(宽度和高度),然后减去窗口的宽度/高度以获得我需要的顶部和左侧位置。

逻辑有效,但我遇到的问题是窗口的高度和宽度没有返回内容更新后的大小,而是返回上次显示的大小。我假设这是因为它尚未使用新内容呈现。

这让我很伤心,因为如果 Window 比上次明显超出屏幕时更大。

我尝试将窗口定位在 OnContentRendered 事件中,但这仅在创建窗口时触发一次,而不是在内容更新后,当不透明度设置为 0 时。

有谁知道在淡入之前如何获得该窗口的准确宽度和高度?

任何帮助,将不胜感激!!

0 投票
1 回答
200 浏览

c# - 我可以在 WPF 中使用可以“击败” SizeToContent 的面板吗?

我基本上希望我的窗口的某些部分不影响 SizeToContent (像标题栏这样的东西),所以它看起来没有大小并且折叠起来。有没有我可以使用的面板(比如 ScrollViewer?)还是我必须自己写?

0 投票
2 回答
13903 浏览

c# - 用户控件上的 SizeToContent

事实上,UserControl 缺少我们在 Window 中拥有的属性“SizeToContent”。

所以问题是:

在 UserControl 上模拟 SizeToContent=WidthAndHeight 行为的最简单和正确的方法是什么?

UPD ...是的,我知道如果在放置用户控件的容器中没有定义高度和宽度,它会自动获取。

但是,当您将一个具有已定义大小的用户控件放入另一个没有大小的用户控件中时,它就不起作用了,并且它们一起进入了容器中。

在这种情况下,您的第二个控件将占用它可以获得的所有空间。

0 投票
1 回答
1470 浏览

wpf - WPF:根据内容计算窗口大小

我需要使窗口的宽度和高度适合其内容。我知道 Window 的 SizeToClient 属性的存在,但是,如果选择 WidthAndHeight 作为 SizeToClient 的值,则窗口事件会以无效的方式触发,这样几个组件在 Loaded 事件期间引发异常:“Hwnd 为零无效"(例如来自 Windows API CodePack 的 GlassWindow 的 SetAeroGlassTransparency)。

有解决方法吗?我可以手动计算窗口大小,但我不知道如何检索窗口的镶边大小(换句话说,实际窗口的内容边距大小)。

WPF错误的详细信息

最好的问候——幽灵。

0 投票
2 回答
10637 浏览

wpf - WPF - 尝试根据初始高度设置可调整大小窗口的 MinHeight

我正在尝试根据其初始高度(当 SizeToContent="WidthAndHeight" 时)设置可调整大小窗口的 MinHeight / MinWidth。

我已经看到了几个答案/解决方案:

http://weblogs.asp.net/psheriff/archive/2010/01.aspx

根据子属性设置表单 MinWidth 和 MinHeight

然而:

  1. 我正在尝试使用 MVVM 模式,并希望能够在 xaml 中实现这一点。

  2. 我还想将诸如 MinHeight 之类的值保留在 ViewModel 之外——我认为它们不属于那里,因为它们将视图行为的一小部分与视图模型联系起来。这是我想留给用户体验设计师的东西。

我正在努力解决的一个解决方案是使用以下 xaml / 绑定:

我希望 'Mode=OneTime' 将 MinHeight 绑定到窗口高度的初始值。

但它不起作用..

有人可以解释为什么吗?有符合我标准的解决方案吗?

谢谢,

标记

0 投票
3 回答
1569 浏览

c# - SizeToContent on Window:加载缓慢会导致窗口显示较小,然后正确调整大小

好的,所以我有一个弹出窗口(在程序正常运行期间)应用户的请求显示一些特定于上下文的信息。这个窗口恰好有很多元素,所以加载需要 0.5 - 1 秒。但是,由于我希望此窗口根据上下文包含几种不同类型的信息,因此其内容的宽度和高度可能会有所不同。因此,我将 SizeToContent 值设置为“WidthAndHeight”,以允许窗口根据绑定的任何内容调整大小。

但是,由于窗口需要一些时间来加载,所以用户首先会看到一个小的方形窗口,然后在所有内容渲染后看到全尺寸窗口。我想避免让用户在完全加载之前看到小窗口。

有没有办法让窗口在完全渲染后才显示?

我尝试过的事情:

  • 将窗口的可见性设置为“隐藏”,然后在 ContentRendered 事件处理程序中将其设置为“可见”:该窗口从不显示。

  • 将窗口的不透明度设置为 0,然后在 ContentRendered 事件处理程序中将其设置为 1:窗口本身的内容的不透明度设置为 0,然后设置为 1。

更新:又一次尝试

我还尝试在 XAML 中将 Window.WindowState 设置为“最小化”,然后在 ContentRendered 事件处理程序中将其设置为“正常”。这似乎部分起作用,尽管窗口本身的宽度大于应有的宽度。更糟糕的是,窗口中的内容似乎根据窗口的正确大小呈现,然后窗口自身变大而没有重新呈现内容。因此,内容不在窗口的中心,我们在内容的右侧有一个令人讨厌的黑色矩形,表示窗口的正确大小与当前(更大)大小之间的差异。当我通过抓住窗口边缘手动调整窗口大小时,内容会正确重新渲染,一切看起来都很好。但是我如何强制在代码中重新渲染呢?Window.UpdateLayout() 不起作用。

0 投票
0 回答
799 浏览

wpf - 方向和 sizeToContent 更改后在 WPF 中调整窗口大小

当我在堆栈面板上从水平方向到垂直方向并返回到水平方向时遇到问题,并且窗口 SizeToContent 属性也被更改。这是我的问题:每当我从垂直到水平或反之亦然来回移动时,我都会根据我正在创建的菜单的方式更改 sizetocontent 。但是,我无法像以前一样将窗口调整回适当的大小。例如:状态 A:this.SizeToContent = Manual this.topLevelStackPanel.Orientation = Horizo​​ntal

状态 B this.SizeToContent = WidthAndHeight this.topLevelStackPanel.Orientation = Vertical

当状态 A 有效时,窗口的恢复范围具有以下值:22,29,960,22 当我从 A 转到 B 时,恢复范围更改为 -1932、-532、3212、1092 现在我尝试返回B 到 A,并且恢复范围不会变回 22,29,960,22

相反,我得到的是一个巨大的窗口,它覆盖了我的屏幕。如何重置尺寸并返回之前的状态。我已经坚持了一段时间了。

这是我的 XAML




0 投票
1 回答
371 浏览

.net - 打开窗口它自己的 Minheight 和 MinWidth

我想用自己的 MinHeight 和 MinWidth 打开一个窗口,而不设置 SizeToContent 属性,也没有在 WPF 中指定窗口的任何高度和宽度。请让我知道如何在 WPF 中实现相同的目标。谢谢