如何让WPF ListBox在开始时使用ItemsSource进行更新?

时间:2015-08-13 20:14:09

标签: c# wpf xaml

我是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");
    }
}

0 个答案:

没有答案