我有一个试图自动调整自定义的自定义控件。问题是.Content属性在幕后自动设置为ViewModel。我需要控件才能访问实际的视图以查看设置的宽度和高度。
当.Content设置为ViewModel时,如何获取View的句柄?
答案 0 :(得分:0)
WPF Controls已根据所在面板的类型自动调整大小。
例如,如果您的控件位于Grid
,它将自动调整大小以拉伸并填充可用的整个空间。如果您的控件位于StackPanel
,它将自动调整大小以占用所需的任何空间,或者换句话说,无论内容占用的是什么空间。
因此,如果您希望您的控件与其内容的大小相同,请不要在其上设置大小,并将UserControl
放在不会拉伸其子项的面板中,例如一个StackPanel
<StackPanel>
<local:MyUserControl />
</StackPanel>
或将其Content
包装在一个不会拉伸它的孩子的控件中。
<UserControl ....>
<UserControl.Template>
<ControlTemplate>
<StackPanel>
<ContentPresenter />
</StackPanel>
</ControlTemplate>
</UserControl.Template>
</UserControl>