我有一个嵌入另一个视图的UserControl:
<UserControl x:Class="..."
...
...
...
xmlns:views="clr-namespace:Omega.GUI.Views"
mc:Ignorable="d"
d:DesignHeight="700" d:DesignWidth="1000">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="1" Width="1*"></ColumnDefinition>
<ColumnDefinition Width="{StaticResource GridSplitterWidth}"/>
<ColumnDefinition Width="1000*"></ColumnDefinition>
</Grid.ColumnDefinitions>
...
...
...
<views:SingleWizardView Grid.Row="{Binding SingleWizardViewGridRowController}" Grid.RowSpan="1" Grid.Column="2" Panel.ZIndex="150" x:Name="SingleWizardViewDisplay" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
如您所见,我想将Grid.Row
值绑定到视图模型中的SingleWizardViewGridRowController
变量。但是,这根本不起作用。通常,为了测试我的数据绑定,我在相同的位置上做了一个具有相同数据绑定的虚拟按钮:
<Button Grid.Row="{Binding SingleWizardViewGridRowController}" Grid.Column="2" Panel.ZIndex="150" Content="dummy button" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
...这非常有用(我使用另一个按钮来更改SingleWizardViewGridRowController
的值以进行测试)。
我的问题是:当涉及到网格的成员值时,嵌入式视图是否受到某种限制?还是我在这里错过了什么?
答案 0 :(得分:1)
我没有足够的声誉来发表评论,所以我在这里问。 SingleWizardView是否具有自己的DataContext?也就是说,您是在视图的构造函数中还是在代码后面的其他地方为视图设置DataContext?
您可能还希望在调试时检查“输出”或“立即”窗口是否存在任何绑定错误。
编辑:
SingleWizardView中的绑定正在查看SingleWizardView的DataContext,并且由于SingleWizardViewGridRowController不是SingleWizardView的DataContext的属性,因此绑定不起作用。
例如,要使绑定正常工作,您可以尝试以下操作:
<views:SingleWizardView Grid.Row="{Binding DataContext.SingleWizardViewGridRowController, RelativeSource={RelativeSource FindAncestor, AncestorType=local:SingleWizardViewManager}}" />