在Content返回ViewModel时获取对View的引用?

时间:2012-01-06 17:55:20

标签: wpf mvvm view viewmodel

我有一个试图自动调整自定义的自定义控件。问题是.Content属性在幕后自动设置为ViewModel。我需要控件才能访问实际的视图以查看设置的宽度和高度。

当.Content设置为ViewModel时,如何获取View的句柄?

1 个答案:

答案 0 :(得分:0)

WPF Controls已根据所在面板的类型自动调整大小。

例如,如果您的控件位于Grid,它将自动调整大小以拉伸并填充可用的整个空间。如果您的控件位于StackPanel,它将自动调整大小以占用所需的任何空间,或者换句话说,无论内容占用的是什么空间。

因此,如果您希望您的控件与其内容的大小相同,请不要在其上设置大小,并将UserControl放在不会拉伸其子项的面板中,例如一个StackPanel

<StackPanel>
    <local:MyUserControl />
</StackPanel>

或将其Content包装在一个不会拉伸它的孩子的控件中。

<UserControl ....>
    <UserControl.Template>
        <ControlTemplate>
            <StackPanel>
                <ContentPresenter />
            </StackPanel>
        </ControlTemplate>
    </UserControl.Template>
</UserControl>