簡體   English   中英

綁定到XAML中屬性的值(值,也是屬性)

[英]Binding to the value of, value(which is again the property) of property in XAML

背景說明:我有一個自定義控件列表框,顯示集合中的值(比如Person)。 Person類具有Person_id,FirstName,LastName等。

new Person(){
                Person_id = "T001",
                FirstName = "Fname1",
                LastName = "LName1"
            });

new Person()
            {
                Person_id = "T002",
                FirstName = "Fname2",
                LastName = "Lname2"
            });

我的自定義控件中有一個名為DefaultCategory的屬性。 此屬性定義要在Listbox中顯示的Person屬性,例如在XAML中,如果我將傳遞DefaultCategory =“FirstName”,那么我的自定義控件列表框將包含“Fname1”,“Fname2”項。

要求:我想從我的自定義控件的resourceDictionary(Generic.XAML)中應用datatemplate。 我喜歡 -

<DataTemplate x:Key="ComboItemTemplate">
    <TextBlock Text="{Binding Path=DefaultCategory}" FontStyle="Italic"/>
</DataTemplate>

問題:當我運行我的應用程序時,自定義控件列表框顯示“FirstName”兩次而不是顯示“Fname1”,“Fname2”

簡介:我想綁定屬性值(“FirstName”)的值(“Fname1”)(“DefaultCategory”)意味着代替Binding valueof(DefaultCategory)我想綁定valueof(valueof(DefaultCategory))

任何形式的幫助表示贊賞。

你不能這樣綁定。 您正在將文本塊綁定到DefaultCategory屬性,該屬性包含“FirstName”,因此您的結果是預期的。

如果要動態更改綁定,可以在模板中為每個可用字段使用觸發器:

<DataTemplate x:Key="ComboItemTemplate">
    <TextBlock Name="DefaultText" FontStyle="Italic"/>

    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=DefaultCategory}" Value="FirstName">
            <Setter TargetName="DefaultText" Property="Text" Value="{Binding FirstName}"/>
        </DataTrigger>

        <DataTrigger Binding="{Binding Path=DefaultCategory}" Value="LastName">
            <Setter TargetName="DefaultText" Property="Text" Value="{Binding LastName}"/>
        </DataTrigger>
    </DataTemplate.Triggers>

</DataTemplate>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM