【发布时间】:2021-12-18 13:31:36
【问题描述】:
我希望有人可以帮助我。
我在主窗口的一列中放置了一个用户控件,我希望访问列宽并从后面的用户控件代码中修改它。 如果我知道列的 x:name 如下所示,我可以实现这一点:
((MainWindow)System.Windows.Application.Current.MainWindow).ColumnName.Width = new GridLength(55, GridUnitType.Pixel);
我想知道,如果我不知道包含列的名称,有没有办法实现同样的事情?
用户控件需要最小和最大宽度,并且可以使用 GridSplitter 在这些限制内增加宽度。用户控件也可以固定打开或关闭到 55 的宽度。我能够实现这一点的唯一方法是设置主窗口的列宽、minWidth 和 MaxWidth。但是这些需要在用户控件关闭时进行修改。如果有更好的方法来实现这一点而无需了解包含网格,我会喜欢一些指针。
感谢您的帮助
【问题讨论】:
-
听起来是个坏主意。控件必须不知道它包含在网格列中这一事实。为什么它不设置自己的Width,并与
Width="auto"住在一个列中。 -
@Clemens 感谢您的及时回复。我在我的问题中添加了一些额外的细节,希望能澄清我的情况
标签: wpf grid user-controls