2017-11-24 5 views
0

에 바인딩 난 내가 Caliburn.MicroCaliburn.Micro 열거가 콤보

XAML와 콤보 상자에이를 결합하는 방법을 열거

public enum FuelType 
{ 
    Diesel, 
    Petrol, 
    E10 
} 

에게 있습니다 :

 public FuelType Fuel 
    { 
     get { return _fuel; } 
     set 
     { 
      _fuel = value; 
      NotifyOfPropertyChange(nameof(Fuel)); 
     } 
    } 
+0

예 : https://summergoat.wordpress.com/2008/07/08/enum-getvalues-markup-extension/ – Sybren

답변

0

올바른 방법은 항목 목록과 선택한 항목을 갖는 것입니다. ViewModel의 항목. Caliburn.Micro의 규칙은 ItemsSource (<x:Name> 사용)과 SelectedItem (Selected<x:Name> 사용)을 모두 해결하도록 설정되었습니다.

뷰 모델 :

internal class FuelViewModel : Screen 
{ 
    public FuelViewModel() 
    { 
     FuelType = Enum.GetValues(typeof(Fueltype)).Cast<Fueltype>().ToList(); 
    } 

    private Fueltype selectedFuelType; 

    public Fueltype SelectedFuelType 
    { 
     get => selectedFuelType; 
     set => Set(ref selectedFuelType, value); 
    } 

    public IReadOnlyList<Fueltype> FuelType { get; } 
} 

보기 :

<ComboBox x:Name="FuelType"/> 

편집 :
Sybren의 링크가 제시 일을하지 않는 이유는에 의해 MVVM 원칙을 나누기 때문이다 View 제어 데이터를 작성합니다. 간단한 열거 형 백업에서 데이터베이스 백업으로 변경하면 뷰가 중단됩니다. 올바른 접근 방식을 사용하면보기를 전혀 건드리지 않고 ViewModel의 유형을 변경할 수 있으며 ViewModel을 깨지 않고도보기를 교환 할 수 있습니다.

관련 문제