在使用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
答案 0 :(得分:1)
您无法绑定到DisplayMemberPath,但您可以做的是在绑定对象中提供一个属性,类似于您提供的工作示例中的WeekDate,它以您希望的格式返回WeekDate。设置WeekDate时,请为新格式设置属性引发propertychanged事件。
答案 1 :(得分:1)
另一个答案的替代方法是将ItemStringFormat设置为您要显示的DateTime格式。
<ComboBox ItemsSource="{Binding Path=PickupDates}"
ItemStringFormat="ddd dd-MM-yyyy"
DisplayMemberPath="WeekDate" /