下我的項目模型我有以下枚舉:WPF枚舉結合
public enum Status { Pending, Approved, Skipped, Denied };
而繼約會類:
public class Appointment
{
public int Id { get; set; }
public DateTime Date { get; set; }
public string Details { get; set; }
public string Location { get; set; }
public Status Status { get; set; }
}
在視圖模型,我有以下特性:
private Appointment _nextAppointemnt;
public List<Appointment> AppList { get; set; }
public Appointment NextAppointment
{
get { return _nextAppointemnt; }
set { _nextAppointemnt = value; OnPropertyChanged("NextAppointment"); }
}
public string[] Statuses { get; set; }
AppList - 從數據庫中提取的約會列表; NextAppointment -is基於當前時間(NextAppointment = AppointmentService.GetNextAppoinment(AppList)
)計算 - 簡單地返回從APPLIST THW最近任命中狀態 - 從枚舉狀態狀態的名字,計算公式爲:
Statuses = Enum.GetNames(typeof(Status));
在我查看我有一個組合框 - 這應該具有枚舉狀態的所有可能的狀態,所以我下面的結合:
<ComboBox ItemsSource="{Binding Statuses}" />
當我試圖綁定這個組合框NextAppointment.Status屬性的設定值將出現問題。
爲此,我已經創建轉換器:
public class EnumToStringConvertor : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return (Status)Enum.Parse(typeof(Status), value.ToString(), true);
}
}
,並做以下綁定:
<ComboBox ItemsSource="{Binding Statuses}" SelectedValue="{Binding NextAppointment.Status, Converter={StaticResource EnumConverter}}"/>
不幸的是,這是行不通的(組合框的設定值是空的)。
但是,如果在VIEWMODE我創建一個單獨的屬性分配NextAppointment.Status它並將其綁定到的SelectedValue組合框的 - 作爲一切工作的魔術:
public Status NextAppointmentStatus { get; set; }
NextAppointmentStatus = NextAppointment.Status;
<ComboBox ItemsSource="{Binding Statuses}" SelectedValue="{Binding NextAppointmentStatus, Converter={StaticResource EnumConverter}}"/>
我不明白爲什麼NextAppointment.Status結合沒有按沒有工作。你能幫我理解嗎?
*不幸的是,這是行不通的* - 如何? –
狀態綁定到Status枚舉,但選定的值爲空(應爲NextAppointment.Status) – Dmytro