WPF組合框DisplayMemberPath


Answers

你沒有綁定到類中的數據,你告訴它從成員“name”所指定的類成員獲取數據,所以如果你的實例有item.Name == "steve"它正試圖從item.steve獲取數據。

為此,您應該從MemberPath中刪除綁定。 將其更改為MemberPath = "Name"這告訴它從成員“Name”獲取數據。 這樣它會調用item.Name ,而不是item.steve

Question

好吧,我看了其他問題,似乎沒有得到我的答案,所以希望在這裡有人可以。

非常簡單的問題為什麼DisplayMemberPath屬性不綁定到該項目?

<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" DisplayMemberPath="{Binding Name}" SelectedItem="{Binding Prompt}"/>

跟踪輸出顯示它試圖綁定到IEnumerable而不是IEnumerable中的實際項目。 我很困惑,一個簡單的方法來填充一個組合框,而不用在xaml中添加一行。

它只是在itemssource中為對象調用ToString()。 我有一個工作,這是這樣的:

<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}"  SelectedItem="{Binding Prompt}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

但在我看來,這麼簡單的任務太多了。 我可以使用relativesource綁定嗎?




您應該將MemberPath="{Binding Name}"更改為MemberPath="Name" 。 然後它會工作。






Links