我有UserControl
,我们称之为CustomDataGrid
,其中包含DataGrid
。剩余内容无关紧要。 SelectedItem
DataGrid
的财产必须是SelectedItem
财产CustomDataGrid
。我希望能够使用Binding
这个属性,因为我使用MVVM
模式。所以我必须在CustomDataGrid
中声明SelectedItem
为DependencyProperty
。但我没有想法山楂树,我可以使其正常...UserControl中的嵌套DataGrid WPF SelectedItem属性
这是怎么DepedencyProperty
-s常常声明:
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register(
"SelectedItem", typeof(Object), typeof(CustomDataGrid),
new FrameworkPropertyMetadata(default(Object), SelectedItemPropertyCallback)
{
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
// Optionally
private static void SelectedItemPropertyCallback(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
// dataGrid - `DataGrid` nested in `UserControl`
((CustomDataGrid)obj).dataGrid.SelectedItem = e.NewValue;
}
// Obviously, it has no any link with nested `dataGrid`. This is the problem.
public Object SelectedItem
{
get { return GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
那么,我该如何正确申报SelectedItem
财产?
我不能接受硬编码构造函数中的“绑定”。我发现这[链接] http://stackoverflow.com/questions/23381560/wpf-usercontrol-selecteditem-of-a-usercontrol-datagrid-to-bind-to-a-itemsource。它有效,但还不够。如果我想从外部代码设置'SelectedItem',该怎么办?价值将如何传递给'dataGrid'? – monstr
如果您从外部代码中设置SelectedItem,绑定会将值推送到datagrid的SelectedItem。只是试试看。其次写任何这样的代码是一种硬编码,不管你在构造函数,属性设置器,属性改变的事件或任何其他事件处理程序。否则您可以将您的解决方案与链接中的解决方案结合起来,并完成属性的完整布线。 – pushpraj
你对,很好的解决方案,它工作得更好,然后在我发布的链接 – monstr