Передача выбора пользовательского элемента управления WPF в управление хостом - PullRequest
2 голосов
/ 09 июля 2010

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

1 Ответ

1 голос
/ 02 апреля 2012

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

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

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>
...