내가 성공적으로 combobox
에 결합 할 수있는 MVVM
엔 패턴을 사용하여 combobox
에 관찰 가능한 모음을 결합하고있어하지만 지금은 내가보기에 SelectedItem
속성을 얻을 수있는 방법을 찾고 있어요를 사용하여 WPF 콤보 상자의 selectedItem 속성을 가져옵니다 모델 (패턴을 제동 할 수 있기 때문에 단순히 호출 할 수는 없습니다.) 그림을 그리는 방법은 선택된 항목을 가리키며 나중에 뷰 모델에서 사용할 수있는 XAML
에 바인딩을 만드는 방법이 있어야한다는 것입니다. 내가 알아낼 수없는 것은 어떻게 ...MVVM 패턴
나는 이것을 어떻게 달성 할 수 있을지에 대한 제안은 무엇입니까?
XAML
<ComboBox SelectedIndex="0" DisplayMemberPath="Text" ItemsSource="{Binding Path=DocumentTypeCmb,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1" Grid.Row="4" Margin="0,4,5,5" Height="23"
HorizontalAlignment="Left" Name="cmbDocumentType" VerticalAlignment="Bottom"
Width="230" />
코드
//Obesrvable collection property
private ObservableCollection<ListHelper> documentTypeCollection = new ObservableCollection<ListHelper>();
public ObservableCollection<ListHelper> DocumentTypeCmb
{
get
{
return documentTypeCollection;
}
set
{
documentTypeCollection = value;
OnPropertyChanged("DocumentTypeCmb");
}
}
//Extract from the method where i do the binding
documentTypeCollection.Add(new ListHelper { Text = "Item1", IsChecked = false });
documentTypeCollection.Add(new ListHelper { Text = "Item2", IsChecked = false });
documentTypeCollection.Add(new ListHelper { Text = "Item3", IsChecked = false });
DocumentTypeCmb = documentTypeCollection;
//Helper class
public class ListHelper
{
public string Text { get; set; }
public bool IsChecked { get; set; }
}
는 완벽한 대단히 –
+1 감사하지만, itemssource 설정시 모드 = 양방향 제거하십시오 - 그냥 아무 의미가 없습니다. – blindmeis
@blindmeis - 그건 사실입니다, 나는 단순히 OP 샘플에서 그 부분을 복사/붙여 넣었습니다. 그것이 기본 바인딩 모드 일 수 있지만 명시 적으로 지정하는 것은 완전히 나쁜 * 것은 아닙니다. 적어도 다른 개발자가 코드를 읽는 것은 어떤 일이 일어나고 있는지에 대해 의심의 여지가 없습니다 (이전에 WPF 코드를 매우 나쁜 것으로 보았습니다. 새 개발자에게는 단서가 없습니다.) – slugster