【发布时间】:2011-09-19 13:24:22
【问题描述】:
在使用 itemssource、datacontexts 和 binding 时尝试显示某些内容时会感到困惑。
public class Date
{
public DateTime _WeekDate;
public ICollectionView _WeekData;
}
public class MainWindowViewModel
{
public ICollectionView WeekDates { get; private set; }
public MainWindowViewModel()
{
List<Date> _dates = new List<Date>();
//Code to populate _dates
WeekDates = CollectionViewSource.GetDefaultView(_dates);
}
}
public MainWindow()
{
InitializeComponent();
_ViewModel = new MainWindowViewModel();
gMain.DataContext = _ViewModel;
}
如您所见,我有一个名为 Date 的类的集合,其中包含一个 DateTime 和另一个集合。这一切都是在 ViewModel 中创建的,该 ViewModel 作为数据上下文附加到网格。
在这个网格中,我有一个组合框,它需要显示集合中每个 Date 类中列出的 DateTime 值。所以我有很多混乱:
<ComboBox ItemsSource="{Binding Path=PickupDates}" DisplayMemberPath="WeekDate" />
这已经奏效,但是我还希望将绑定转换器应用于 MemberPath 以更改显示日期的样式。但是以这种方式应用它我无法添加转换器。无济于事,我尝试了以下方法:
<ComboBox ItemsSource="{Binding Path=PickupDates}" DisplayMemberPath="{Binding Path=WeekDate", Converter={StaticResource DateFormatter}/>
有什么想法吗?或者有什么更好的方法?
提前致谢, SumGuy
【问题讨论】:
-
代码似乎不连贯。
Date类从未使用过。 -
什么类型的 PickupDates 属性?它应该在 MainWindowViewModel 类中吗?
-
很抱歉。希望编辑有所帮助。 WeekDates 是一个使用 Date 对象列表作为源的集合
标签: c# wpf data-binding combobox datacontext