2010-07-09 2 views
2

목록 상자가있는 WPF 사용자 컨트롤이 있습니다. 목록 상자에서 선택한 항목을 바인딩을 통해 호출 컨트롤에 전달하고 싶습니다. 이것을 어떻게 할 수 있습니까?호스트 컨트롤에 WPF 사용자 컨트롤 선택 전달

+0

당신은 의미 :

public class CustomListControl : Control { static CustomListControl() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomListControl), new FrameworkPropertyMetadata(typeof(CustomListControl))); SelectedItemProperty = ListBox.SelectedItemProperty.AddOwner(typeof(CustomListControl)); } public static readonly DependencyProperty SelectedItemProperty; public Object SelectedItem { get { return this.GetValue(SelectedItemProperty); } set { this.SetValue(SelectedItemProperty, value); } } } 

그리고는 generic.xaml을 마크 업에 UserControl을에 내부 목록 상자에서 바인딩을 추가 귀하의 사용자 정의 컨트롤이 상주하는 부모 컨트롤에 전달? MVVM을 사용하고 있습니까? 어떻게 목록 상자를 채우고 있습니까? 가능한 한 많은 세부 정보를 제공하고 일부 코드 (사용자 컨트롤에 xaml)를 사용하면 정답을 쉽게 제공 할 수 있습니다. – akjoshi

+0

네, MVVM 또는 프리젠 테이션 모델 변형의 형식을 사용하고 있기 때문에 사용자 컨트롤 목록 상자 SelectedItem을 모델의 속성에 바인딩 할 수 있습니다. 그러면 모델의 부모 컨트롤에 노출됩니다. –

답변

1

사용자 정의 컨트롤에서 SelectedItem에 대한 새 속성을 노출하고이를 자식 컨트롤 ListBox에 바인딩 할 수 있습니다. 사용자 제어를위한

코드 (그래도 난 Control에서 상속) :

<ListBox 
    SelectedItem="{Binding RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type local:CustomListControl},Mode=FindAncestor},Path=SelectedItem, Mode=TwoWay}" 
</ListBox> 
관련 문제