以下是我页面中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}"/>
完美无缺。
答案 0 :(得分:3)
问题是PlayersTest
是一个字段,而不是一个属性。绑定仅适用于属性。您可以使用auto属性语法声明它,以使视图模型中的代码保持相似:
public ObservableCollection<SostavPlayerData> PlayersTest { get; private set; }
然后你只需要将它设置为ObservableCollection<SostavPlayerData>
的新实例,你就可以了。