无法绑定到主窗口中的usercontrol属性

时间:2015-02-25 13:00:36

标签: c# wpf mvvm user-controls

我有 usercontrol ,其中我有datagrid

public partial class UserControl1 : UserControl
{
    public object SelectedItem
    {
        get { return GetValue(SelectedItemProperty); }
        set { SetValue(SelectedItemProperty, value); }
    }

    public static readonly DependencyProperty SelectedItemProperty = DataGrid.SelectedItemProperty.AddOwner(typeof(UserControl1));

    }
   <DataGrid ItemsSource="{Binding MySource}"
              AutoGenerateColumns="True"
                                SelectedItem="{Binding Path=SelectedItem,RelativeSource={RelativeSource FindAncestor, 
                                         AncestorType=my:UserControl1, 
                                         AncestorLevel=1}}"/>

在我的 MainWindow

<WpfApplication3:UserControl1 x:Name="myControl" 
                                 Grid.Row="0" SelectedItem="{Binding CurrentItem}"  />

并在我的 MainWindow 视图模型中

    public object CurrentItem
    {

        get { return currentItem; }
        set
        {      currentItem = value;
               OnPropertyChanged("CurrentItem");
        }
    }

我无法获得currentItem。

1 个答案:

答案 0 :(得分:1)

您正在将UserControl的DataContext设置为自身,因此当您为SelectedItem设置绑定时,您实际上是要求它在UserControl的DataContext上查找CurrentItem,而不是主窗口视图模型。

为主窗口命名并使用绑定:

{Binding DataContext.CurrentItem, ElementName=windowName}