我有 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。
答案 0 :(得分:1)
您正在将UserControl的DataContext设置为自身,因此当您为SelectedItem设置绑定时,您实际上是要求它在UserControl的DataContext上查找CurrentItem,而不是主窗口视图模型。
为主窗口命名并使用绑定:
{Binding DataContext.CurrentItem, ElementName=windowName}