我是WPF的新手,尤其是数据绑定,但我正在尝试使用外部资源中的元素填充ListBox,并尝试遵循MVVM模式。因此,我试图避免代码隐藏中的任何代码。我已经查看过类似的其他几十个问题,但我觉得我错过了一些愚蠢的东西,因为我无法通过值生成ListBox。我已经设置了DataContext,然后将ItemsSource的Binding设置为正确的属性。
问题
如何在应用程序启动时简单地使用此代码填充空的ListBox?
XAML
<TabItem Name="ServerListTab" Header="Server List">
<TabItem.DataContext>
<viewModel:ServerListViewModel />
</TabItem.DataContext>
<ListBox
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding ServerList, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding SelectedServer}">
</ListBox>
</TabItem>
视图模型中的ServerList属性
public BindingList<string> ServerList
{
get { return _serverListModel.ServerList; }
set
{
if (ReferenceEquals(_serverListModel.ServerList, value)) return;
var aTestServers = //code hidden : gets array correctly from resource
for (var i = 0; i < aTestServers.Count; i++)
{
_serverListModel.ServerList.Add(aTestServers[i]);
}
InvokePropertyChanged("ServerList");
}
}