【发布时间】:2019-03-25 10:22:10
【问题描述】:
我的父页面上有一个工具栏。然后它有一个Frame 元素,位于加载子页面的工具栏下方。是否有从我导航到的子页面中操作位于父页面中的工具栏的“正确”方法?父页面还有其他我想操作的属性。
<Page>
<Grid>
<Grid.RowDefinitions>
<RowDefinition x:Name="ToolbarRowDefinition" Height="46" />
<RowDefinition x:Name="ContentRowDefinition" Height="*" />
</Grid.RowDefinitions>
<local:MyToolbar x:Name="Toolbar"
Grid.Row="0" />
<Frame x:Name="ChildFrame"
Grid.Row="1" />
</Grid>
</Page>
我不认为尝试这样做是一个坏主意,因为我不知道有任何反对它的规则。所有这些都位于视图中,因此我认为尝试从其他视图中访问其他视图级元素、方法和属性不会有问题。不过,如果我错了,请纠正我。谢谢!
【问题讨论】:
-
因此,如果您在子页面中获得父页面的实例,您将能够访问它的公共属性..这是您要求的吗?
-
嗯,我知道有一些方法可以访问父母的数据。我只是想知道这样做是否合适,如果有的话,哪种方法最合适。
-
我认为的另一种方法是,如果您有 ParentViewModel 的实例,而不是子视图中的父视图实例,这可能是更新父控件状态的最佳方法。但是由于我不确定您要更新哪些元素以及是否要实现此目的,您可能需要更改您的 xaml - 例如将一些元素绑定到 ViewModel 属性并需要做一些额外的事情。但到目前为止,我认为这始终是一个好方法。
-
使用代码隐藏的方法从子级更新父级中的某些内容并没有错,方法是在子级中有一个视图实例。但希望您确保将相同的实例传递给孩子,以便更改能够反映出来。