C# MVVMCross WPF网格行命令未传递参数
WPF 4.6我有一个列表网格,希望根据选择的行打开一个视图,传递ID。我没有得到任何传递到新细节的信息: 网格列表视图XAMLC# MVVMCross WPF网格行命令未传递参数,c#,wpf,mvvm,mvvmcross,C#,Wpf,Mvvm,Mvvmcross,WPF 4.6我有一个列表网格,希望根据选择的行打开一个视图,传递ID。我没有得到任何传递到新细节的信息: 网格列表视图XAML <DataGridTemplateColumn Width="Auto"> <DataGridTemplateColumn.CellTemplate> <DataTemplate > <Button Content="Edit Line" Com
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Button Content="Edit Line"
Command="{Binding DataContext.EditClientLineCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}"
Margin="5" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我在选择行时设置此选项:
public CustomerInfo SelectedCustomer
{
get { return _selectedCustomer; }
set
{
_selectedCustomer = value;
_thisparams.Index = _selectedCustomer.Id;
RaisePropertyChanged(() => SelectedCustomer);
}
}
然后作为参数传递
private MvxCommand<CustomerInfo> _goToDetails;
public MvxCommand<CustomerInfo> EditClientLineCommand
{
get { return _goToDetails ??
(_goToDetails = new MvxCommand<CustomerInfo>
(SelectedCustomer => {
ShowViewModel<CustomerDetailViewModel>
(_thisparams);}
)
);
}
}
customerId
是0
此外,然后我退出并重新选择另一行,我获得了详细信息(仍然没有分配任何内容),但没有命中初始断点。您应该在绑定中设置
模式=FindAncestor
:
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}
问题1固定:
我将DetailsParameters
类更改为static
——这对我来说很有意义。在Stuart的文档中,当他谈到这个类时,它是一个标准的实例类。。。所以我仍然担心我没有遵循正确的设计模式
较小的问题2:MVVMCross具有视图堆栈的概念,在其中创建视图并在导航时重新使用(向前)。通过设计,它将返回先前创建的视图并将其向前移动,而没有任何机会“检查数据”。。。我读过很多“这是设计的”评论,但就我个人而言,我不明白为什么默认情况下你会这么做,而没有一个简单的模式来刷新数据。。。
我还没有找到解决这个问题的方法,我将发布一个单独的问题。(在使用Caliburn、MVVMLight并发现它们的问题之后…总会有一些问题!!)(Stuart在Mvx方面做得很出色,但我在Mvx方面只有2天的经验,所以可能我遗漏了一些东西)可能更好的XAML,但没有修复。我想我在早期版本中就有这个。。。
public void Init( DetailsParameters thisid)
{
_customerId = thisid.Index;
}
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}