如何显式设置绑定路径
本文关键字:路径 绑定 设置 何显式 | 更新日期: 2023-09-27 18:03:06
我有一个wpf桌面应用程序。我正在使用数据网格,我使用视图模型架构填充我的网格。
每一行也有一个按钮。我已经将一个按钮(尝试)绑定到一个命令对象。
This my MVVM:
public class Navigation
{
private ICommand _ViewJobAction;
public ICommand ViewJobAction
{
get
{
try
{
if (_ViewJobAction == null)
{
_ViewJobAction = new MyCommand(
param => ViewJob()
);
}
return _ViewJobAction;
}
catch (Exception ex)
{
//handle error
}
return null;
}
}
private void ViewJob()
{
//do some stuff
}
private Customers _CustomerRecords;
public Customers CustomerRecords
{
get
{
return _CustomerRecords;
}
set
{
_CustomerRecords = value; RaisePropertyChanged("CustomerRecords");
}
}
}
public class Customers
{
//get data
}
在我看来:
<DataGrid "{Binding Navigation.CustomerRecords.Records}">
//defined columns
<DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn>
<Button Command="{Binding Navigation.ViewJobAction ,UpdateSourceTrigger=Explicit}" Content="View Job">
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这不会在我的VM中调用我的命令。
在输出窗口我得到这个:
System.Windows.Data Error: 40 : BindingExpression path error: 'Navigation' property not found on 'object' ''CustomerRecord' (HashCode=26023080)'. BindingExpression:Path=Navigation.ViewJobAction; DataItem='CustomerRecord' (HashCode=26023080); target element is 'Button' (target property is 'Command' (type 'ICommand')
现在我想我理解这个错误,但我不知道如何修复它除了移动ViewAction代码到客户类,我不想这样做。
我最后一次尝试让这个工作是把显式的'选项。
您可以将绑定的RelativeSource设置为指向DataGrid
,然后绑定到其DataContext
的属性:
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.ViewJobAction, UpdateSourceTrigger=Explicit}"
Content="View Job" />