组合框,数据文件和数据绑定

时间:2011-09-19 13:24:22

标签: c# wpf data-binding combobox datacontext

在使用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

2 个答案:

答案 0 :(得分:1)

您无法绑定到DisplayMemberPath,但您可以做的是在绑定对象中提供一个属性,类似于您提供的工作示例中的WeekDate,它以您希望的格式返回WeekDate。设置WeekDate时,请为新格式设置属性引发propertychanged事件。

答案 1 :(得分:1)

另一个答案的替代方法是将ItemStringFormat设置为您要显示的DateTime格式。

<ComboBox ItemsSource="{Binding Path=PickupDates}" 
          ItemStringFormat="ddd dd-MM-yyyy" 
          DisplayMemberPath="WeekDate" /