gpt4 book ai didi

c# - 从父 View xaml 设置子控件 View 模型的属性

转载 作者:行者123 更新时间:2023-12-03 10:45:55 25 4
gpt4 key购买 nike

我想从父 View xaml 为子控件设置 View 模型的属性。

所以我希望父 xaml 是这样的:

<UserControl x:Class="MainUserControl"
...>
<Grid...>
<local:ChildDetailView x:Name="childView1" ChildVMProperty="ValueOptions.Option1"/>
<local:ChildDetailView x:Name="childView2" ChildVMProperty="ValueOptions.Option2"/>
</Grid>
</UserControl>

其中 ChildVMProperty 是 ChildDetailViewModel 上的属性(如果相关,则该属性采用 ValueOptions 类型的枚举)。

请注意,ViewModel 是在后面的代码中设置的(而不是在 xaml 中),因为实际上我在 ViewModel 中使用 DI 来注入(inject) prism 事件聚合器。

当我尝试做这样的事情时,xaml 会提示,因为它显然对 ChildViewModel 类一无所知。执行此操作的正确语法是什么,或者如果它不那么直接,我有什么选择来解决这个问题?

最佳答案

您需要先创建 ChildDetailView.xaml文件。假设您将此文件放在命名空间 MyApp.Controls ,那么您上面的 XAML 将类似于

<UserControl x:Class="MainUserControl"
xmlns:local="clr-namespace:MyApp.Controls" >
<Grid ...>
<local:ChildDetailView x:Name="childView1" ChildVMProperty="ValueOptions.Option1"/>
<local:ChildDetailView x:Name="childView2" ChildVMProperty="ValueOptions.Option2"/>
</Grid>
</UserControl>

您必须确保拥有 DependencyProperty (DP) ChildVMProperty在您的 UserControl 上定义也 - 但这是另一个问题,关于该特定主题有很多答案。要为 View 添加 DP,您可能需要对您尝试定位的特定控件进行子类化。

将 DP 用于属性的另一种方法是使用转换器。

我希望这有帮助。

关于c# - 从父 View xaml 设置子控件 View 模型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26157656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com