2012-01-06 50 views
0

我有一个正在尝试自动自动大小的自定义控件。问题是.Content属性在后台自动设置为ViewModel。我需要该控件能够访问实际视图以查看设置的宽度和高度。获取内容返回ViewModel时的查看参考?

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

+0

是不是您的自定义控件的视图? – FMM 2012-01-06 18:19:43

+0

你可能想重申这个问题。通过处理视图,你的意思是什么? – 2012-01-06 18:35:06

+0

例如,我有一个模态窗口对话框。在该窗口的加载事件中,我想要获取它正在渲染的顶层控件/内容,我检查了该窗口的.Content属性,但它不是我的视图或正在渲染的最顶层的网格,它返回ViewModel。 – happyfirst 2012-01-07 23:30:35

回答

0

WPF控件基于它们在面板的类型已经自动调整大小。

例如,如果你的控制是一个Grid它会自动调整大小本身伸展和填充可用整个空间给它。如果您的控件位于StackPanel中,它将自动调整自身大小以占用它需要的任何空间,换言之,无论内容占用哪个空间。

所以,如果你希望你的控制是大小无论它的内容是一样的,不就可以设置大小,要么把你UserControl在面板不舒展它的孩子,如StackPanel

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

或将其包裹为Content的控件不能拉伸它的孩子。

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

我明白控件可以自动自动调整大小。问题是我有一个宽度和高度设置为自动的视图。所以当我在主应用程序的选项卡中显示通过该视图呈现的视图模型时,它会自动适合。然而,有时通过自定义查找控件抛出一个模式对话框(也设置为自动宽度和高度),并在那里呈现相同的视图,现在模式对话框中的所有内容都会自动呈现巨大的!!!!!我试图获得该视图的句柄,以便如果宽度和高度是自动的,我可以将该站点更改为小于主应用程序窗口并居中。 – happyfirst 2012-01-07 23:28:53

+0

@happyfirst为什么不在对话框中设置最大高度/宽度? – Rachel 2012-01-08 08:29:03

+0

我试过了。我以为我希望设置一个最大宽度和高度,但仍然打开巨大。 – happyfirst 2012-01-09 13:29:27