【发布时间】:2017-05-12 07:42:57
【问题描述】:
我正在尝试将 ViewModel 中的 List 绑定到 Page 中的 ListView,但我无法让它工作,尽管列表中填充了值,但 ItemsSource 始终为 null。
这就是我设置整个事情的方式。
这些属性被添加到我的 xaml 中的页面标记
xmlns:viewmodels ="using:TimeMachine3.ViewModels"
d:DataContext="{d:DesignInstance viewmodels:MasterViewModel}"
我的 ListView 被定义为
<ListView x:Name="lstMainMaster" ItemsSource="{Binding MyList}" SelectionChanged="lstMainMaster_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{x:Bind Name}"/>
<TextBlock Text="{x:Bind Number}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在我的 master.cs(页面代码)中有
private ViewModels.MasterViewModel viewmodel;
//constructor
public master()
{
this.InitializeComponent();
this.Loaded += Master_Loaded;
}
private void Master_Loaded(object sender, RoutedEventArgs e)
{
viewmodel = new ViewModels.MasterViewModel();
viewmodel.populate();
}
在 masterViewmodel(页面的视图模型)中我有这段代码
private ObservableCollection<Month> _myList;
public ObservableCollection<Month> MyList{ get {return _myList; } }
public void Populate()
{
_myList = new ObservableCollection<Month>(DataBase.GetMonths(2017));
}
【问题讨论】:
-
你在哪里用值填充你的列表,你能提供一些代码吗?
-
我已经用更多代码编辑了我的问题,以展示它是如何完成的。 viewModel 在 Page.Loaded 事件处理程序中创建。创建后,在视图模型上调用 Populate()。在 populate() 我填充 List
_myList 绑定属性 List MyList 在它的 get 语句中返回
标签: c# xaml listview uwp view-model-pattern