1
我正在用組合框和數據網格構建wpf表單。組合框綁定到模型基類moWeek的集合。所選項目被綁定到一個叫做wm的耙類,如SelectedItem="{Binding Week, Mode=TwoWay}"
,而在Viewmodel類中只是vm
類型的屬性。無法轉換爲基類
現在,當我從組合框中選擇一個值時,我得到一個System.NotSupportedException異常,稱爲TypeConverter無法轉換model.moWeek。
我想我需要某種從moWeek到vmWeek的轉換器,但我不知道在哪裏以及如何放置它。我將如何做到這一點?
下面是代碼:
型號一週類:
using System.Collections.ObjectModel;
namespace Model
{
public class moWeek
{
public moWeek()
{
}
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
}
}
視圖模型星期類:
using System;
using System.ComponentModel;
using Model;
using ViewModel.Lists;
namespace ViewModel.Planning
{
public class vmWeek : moWeek
{
private ProjectList projects;
public ProjectList Projects
{
get { return projects; }
set { projects = value; OnPropertyChanged(new PropertyChangedEventArgs("Projects")); }
}
private void OnPropertyChanged(PropertyChangedEventArgs propertyChangedEventArgs)
{
throw new NotImplementedException();
}
}
}
視圖模型
using System.ComponentModel;
using tegViewModel.Auswahllisten;
namespace tegViewModel.Planning
{
public class vmPlanning : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public vmPlanning()
{
Weeks = new alWeeks(); //Collection of moWeek
}
public alWeeks Weeks { get; set; }
private vmWeek week;
public vmWeek Week
{
get { return Week; }
set { Week = value; OnPropertyChanged(new PropertyChangedEventArgs("Week")); }
}
private void OnPropertyChanged(PropertyChangedEventArgs propertyChangedEventArgs)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyChangedEventArgs.PropertyName));
}
}
}
}
謝謝,這工作正常。順便說一句,我找到了另一種解決方案,將Weeks類型更改爲vmWeek集合,並將隱式轉換器放入alWeeks集合中。 –
我想知道爲什麼你不能這麼做:),我決定把它作爲先決條件。 –