Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVMCross WPF网格行命令未传递参数_C#_Wpf_Mvvm_Mvvmcross - Fatal编程技术网

C# MVVMCross WPF网格行命令未传递参数

C# 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

WPF 4.6我有一个列表网格,希望根据选择的行打开一个视图,传递ID。我没有得到任何传递到新细节的信息:

网格列表视图XAML

<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}}