簡體   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