[英]WPF MVVM TextBlock binding to string in a class DependencyProperty
在我的应用程序中,我在DataGrid
有一个成员列表,并且当选择一个成员时,将在其成员配置文件中填充其详细信息。 成员配置文件由10多个TextBlocks
组成,每个文本值都绑定到string
类型的单个DependencyProperty (DP)
。
生成的成员列表是List<MEMBERINFO>
,而SelectedMember DP
是MEMBERINFO类型。
public partial class MEMBERINFO
{
public GD_MEMBERDETAILS MEMBERDETAILS { get; set; }
public List<GD_ADDRESSDETAILS> ADDRESSDETAILS { get; set; }
public List<GD_VESSELDETAILS> BOATDETAILS { get; set; }
public GD_MEMBERSHIPS MEMBERSHIP { get; set; }
public List<string> FAMILYMEMBERS { get; set; }
}
当前,当在DataGrid
中SelectedMember
成员时,将SelectedMember
值分配给各个DependencyProperties
,以在成员配置文件中显示,例如
MemberName = SelectedMember.MEMBERINFO.MEMBER_NAME;
在执行此操作的同时,我觉得应该有一种更整洁的方法来执行此操作,因为我已经在SelectedMember
所需的所有信息。 因此,不应10+串DependencyProperties
和分配他们的价值观SelectedMember
,有没有办法有一个容器内的所有的TextBlocks用的ItemsSource必然SelectedMember
并指定绑定文本中的属性SelectedMember
? 因此,就像使用DataGrid一样? 我知道ListView和ListBox也有ItemsSource,但是我的成员概要文件不是列表,我只想要一个简单的容器,它没有DataGrids和ListViews / Box那样的任何固有功能。
注意:在另一个存在类似问题的应用程序中,我设法处理了DataGrid,以删除其所有固有的DataGrid功能,并在单个单元格中显示多个文本块,以便可以使用其ItemsSource。 但这确实很痛苦,所以我再次觉得应该有一个更简单的方法!
您不能直接将TextBlock
绑定到源属性吗?:
<ItemsControl ...>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.SelectedMember.MEMBERINFO.MEMBER_NAME,
RelativeSource={RelativeSource AncestorType=ItemsControl}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.