繁体   English   中英

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

[英]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; }
}

当前,当在DataGridSelectedMember成员时,将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM