C# 更改父项时更新UserControl
处理以下情况的正确方法(MVVM)是什么?我们有一个窗口/用户控件,它承载很少的用户控件和网格。当我们选择网格项时,C# 更改父项时更新UserControl,c#,wpf,C#,Wpf,处理以下情况的正确方法(MVVM)是什么?我们有一个窗口/用户控件,它承载很少的用户控件和网格。当我们选择网格项时,SelectedItem=“{Binding SelectedAccount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}”正在更新用户控件上的SelectedAccount属性 <TabItem Header="{x:Static p:Resources.Basic}"> <DockPanel>
SelectedItem=“{Binding SelectedAccount,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}”
正在更新用户控件上的SelectedAccount
属性
<TabItem Header="{x:Static p:Resources.Basic}">
<DockPanel>
<accounts:UCBasic x:Name="UCBasic" SelectedAccount="{Binding SelectedItem, ElementName=gridMain}"></accounts:UCBasic>
</DockPanel>
</TabItem>
<TabItem Header="{x:Static p:Resources.AdditionalData}">
<DockPanel>
<accounts:UCAdditionalData x:Name="UCAdditionalData" SelectedAccount="{Binding SelectedItem, ElementName=gridMain}"></accounts:UCAdditionalData >
</DockPanel>
... more user controls ...
</TabItem>
基本上,我将如何通知此用户控件,SelectedAccount
值已更改,并且它应该更新自身(它自己的文本框、网格等)?1)您可以在ViewModel中使用INotifyPropertyChanged实现(如果将发送通知以更新视图中更改的ViewModel属性)
2) 如果两个用户控件都使用一个ViewModel,1选项将立即帮助您。
如果使用不同的ViewModels,则在更新第一个用户控件时,应在代码中更新secornd用户控件视图模型。如果每个用户控件都有
帐户
属性,则它可以在自己的文本框、网格等中进行绑定,例如
<TextBox Text="{Binding Account.Name, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
您是说您的
所选帐户不起作用吗?因为如果是这样,您应该能够绑定到UserControl
中的SelectedAccount
的属性。或者在属性更改的回调中执行某些操作。
<TextBox Text="{Binding Account.Name, RelativeSource={RelativeSource AncestorType=UserControl}}"/>