WPF MVVM TextBlock 绑定到 class DependencyProperty 中的字符串

WPF MVVM TextBlock binding to string in a class DependencyProperty

In my application I have a list of members in a DataGrid, and when a member is selected a member profile is populated with their details.成员个人资料由 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 值将分配给个人 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>