2010-07-09 3 views
2

У меня есть пользовательский элемент управления WPF со списком. Я хочу передать выбранный элемент в поле списка вызывающему элементу через привязку. Как я могу это достичь?Передача выбора пользовательского элемента управления WPF для управления хостом

+0

Вы имеете в виду передавая его родительскому элементу управления, в котором находится ваш пользовательский элемент управления? Вы используете MVVM? Как вы заполняете свой список? Пожалуйста, предоставьте как можно больше деталей, и некоторый код (xaml в вашем usercontrol) упростит вам предоставление правильного ответа. – akjoshi

+0

Да, надеюсь, вы используете какой-то вариант MVVM или вариант модели презентации, поэтому вы можете привязать свой список управления пользователя SelectedItem к свойству модели, которое затем подвергается воздействию вашего родительского элемента управления (который в tern привязывается к нему). –

ответ

1

Вы можете открыть новое свойство для SelectedItem для своего пользовательского элемента управления и связать его с дочерним элементом управления ListBox.

код для пользовательского элемента управления (я унаследовал от контроля, хотя):

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); } 
    } 
} 

И добавить связывание с внутренней ListBox на свой UserControl в Generic.xaml разметке:

<ListBox 
    SelectedItem="{Binding RelativeSource={RelativeSource AncestorLevel=1, AncestorType={x:Type local:CustomListControl},Mode=FindAncestor},Path=SelectedItem, Mode=TwoWay}" 
</ListBox> 
Смежные вопросы