2
我有一个带有列表框的WPF用户控件。我想通过绑定将列表框中选定的项目传递给调用控件。我怎样才能做到这一点?将WPF用户控件选择传递给主机控件
我有一个带有列表框的WPF用户控件。我想通过绑定将列表框中选定的项目传递给调用控件。我怎样才能做到这一点?将WPF用户控件选择传递给主机控件
您可以在用户控件上公开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>
你的意思是将它传递给用户控件所在的父控件?你在使用MVVM吗?你如何填充你的列表框?请尽可能提供更多详细信息,并且在您的用户控件中使用一些代码(xaml)可以很容易地为您提供正确的答案。 – akjoshi 2010-07-09 05:54:21
是的,希望您使用某种形式的MVVM或演示文稿模型变体,因此您可以将您的用户控件列表框SelectedItem绑定到模型上的一个属性,然后将其暴露给您的父控件(该控件与其绑定)。 – 2010-07-09 07:37:57