2010-07-09 51 views
2

我有一个带有列表框的WPF用户控件。我想通过绑定将列表框中选定的项目传递给调用控件。我怎样才能做到这一点?将WPF用户控件选择传递给主机控件

+0

你的意思是将它传递给用户控件所在的父控件?你在使用MVVM吗?你如何填充你的列表框?请尽可能提供更多详细信息,并且在您的用户控件中使用一些代码(xaml)可以很容易地为您提供正确的答案。 – akjoshi 2010-07-09 05:54:21

+0

是的,希望您使用某种形式的MVVM或演示文稿模型变体,因此您可以将您的用户控件列表框SelectedItem绑定到模型上的一个属性,然后将其暴露给您的父控件(该控件与其绑定)。 – 2010-07-09 07:37:57

回答

1

您可以在用户控件上公开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); } 
    } 
} 

而且从内部列表框中添加绑定到您的用户控件在Generic.xaml标记:

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