WPF Combobox DisplayMemberPath

后端 未结 6 1351
执念已碎
执念已碎 2020-11-28 08:35

Ok, I looked at other questions and didn\'t seem to get my answer so hopefully someone here can.

Very simple question why does the DisplayMemberPath property not bin

相关标签:
6条回答
  • 2020-11-28 08:49

    You are not binding to the data in the class, you are telling it to get it's data from the class member that is named by the member "name" so, if your instance has item.Name == "steve" it is trying to get the data from item.steve.

    For this to work, you should remove the binding from the MemberPath. Change it to MemberPath = "Name" this tells it to get the data from the member "Name". That way it will call item.Name, not item.steve.

    0 讨论(0)
  • 2020-11-28 08:57

    Trying this :

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

    0 讨论(0)
  • 2020-11-28 09:09

    You should change the MemberPath="{Binding Name}" to MemberPath="Name". Then it will work.

    0 讨论(0)
  • 2020-11-28 09:13

    You could remove DisplayMemberPath and then set the path in the TextBlock.
    The DisplayMemberPath is really for when you have no ItemTemplate.
    Or you could remove your ItemTemplate and use DisplayMemberPath - in which case it basically creates a TextBlock for you. Not recomended you do both.

       <TextBlock text="{Binding Path=Name, Mode=OneWay}" 
    
    0 讨论(0)
  • 2020-11-28 09:13

    Alternatively you don't need to set the DisplayMemberPath. you can just include an override ToString() in your object that is in your PromptList. like this:

    class Prompt {
        public string Name = "";
        public string Value = "";
    
        public override string ToString() {
            return Name;
        }
    }
    

    The ToString() will automatically be called and display the Name parameter from your class. this works for ComboBoxes, ListBoxes, etc.

    0 讨论(0)
  • 2020-11-28 09:14

    DisplayMemberPath specifies the path to the display string property for each item. In your case, you'd set it to "Name", not "{Binding Name}".

    0 讨论(0)
提交回复
热议问题