WPF ComboBox绑定

时间:2010-05-01 22:16:46

标签: .net wpf binding combobox

以下是我页面中XAML代码的和平:

            <ComboBox Grid.Row="2" Grid.Column="1" Name="Player2" MinWidth="50"
                ItemsSource="{Binding PlayersTest}" DisplayMemberPath="ShortName">

自定义对象绑定到页面数据上下文:

        page.DataContext = new SquadViewModel();

以下是“SquadViewModel”类源代码的一部分:

public class SquadViewModel
{
    public SquadViewModel()
    {
        PlayersTest = new ObservableCollection<SostavPlayerData>();
        PlayersTest.Add(new SostavPlayerData { ShortName = "A. Sereda", });
        PlayersTest.Add(new SostavPlayerData { ShortName = "D. Sereda", });
    }

    public readonly ObservableCollection<SostavPlayerData> PlayersTest;

    public string TestText { get { return "Binding works perfectly!"; } }
}

因此,ComboBox应该显示一个对象列表,但它是空的。

你知道为什么以及如何获得这个清单吗?

谢谢。

P.S。我尝试过另一个XAML标记

            <ComboBox Grid.Row="1" Grid.Column="1" Name="Player1" MinWidth="50"
                ItemsSource="{Binding PlayersTest}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding ShortName}"/>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

它也不起作用,但绑定到简单的文本块:

        <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding TestText}"/>

完美无缺。

1 个答案:

答案 0 :(得分:3)

问题是PlayersTest是一个字段,而不是一个属性。绑定仅适用于属性。您可以使用auto属性语法声明它,以使视图模型中的代码保持相似:

public ObservableCollection<SostavPlayerData> PlayersTest { get; private set; }

然后你只需要将它设置为ObservableCollection<SostavPlayerData>的新实例,你就可以了。