Datagrid插入行而不离开该行始终为空

时间:2017-05-24 08:13:53

标签: c# wpf mvvm data-binding datagrid

我想知道它是否可能,或者只是我希望有一些不可实现的东西。

我正在解释我的问题:

我有Datagrid这么简单:

<DataGrid Background="Transparent" RowBackground="MidnightBlue" 
          HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White"
          CanUserReorderColumns="False" AutoGenerateColumns="False" 
          SelectionMode="Single" CanUserSortColumns="False"
          ItemsSource="{Binding Patrols}"
          SelectedItem="{Binding SelectedPatrol}">
      <DataGrid.Columns>
            <DataGridTextColumn CellStyle="{DynamicResource DataGridCell}"
                                EditingElementStyle="{DynamicResource DataGridTextBox}"
                                Binding="{Binding Phone}">
                <DataGridTextColumn.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock FontWeight="ExtraBold" FontSize="20"
                                   Text="Gsm"/>
                    </DataTemplate>
                </DataGridTextColumn.HeaderTemplate>
            </DataGridTextColumn>
             <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Height="30" Width="30" 
                                    Visibility="{Binding Path=DataContext, Converter={StaticResource IsNamedObjectVisibilityConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGridRow}}"
                                    Command="{Binding Path=DataContext.InsertOrUpdateCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}"
                                    ToolTip="Enregistrer">      
                                <Image Source="../../Images/Save.png"/>
                            </Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
</Grid>

viewModel中有我的属性:

    private ObservableCollection<Patrol> _patrols;
    public ObservableCollection<Patrol> Patrols
    {
        get { return _patrols; }
        set { Set(() => Patrols, ref _patrols, value); }
    }

    private Patrol _selectedPatrol;
    public Patrol SelectedPatrol
    {
        get { return _selectedPatrol; }
        set { Set(() => SelectedPatrol, ref _selectedPatrol, value); }
    }

    private ICommand _insertOrUpdateCommand;
    public ICommand InsertOrUpdateCommand
    {
        get { return _insertOrUpdateCommand = _insertOrUpdateCommand ?? new RelayCommand(InsertOrUpdatePatrol); }
    }

然后我的函数我应该从selectedItem属性中检索我的新对象:

    private void InsertOrUpdatePatrol()
    {
        var patrolProcessor = new PatrolProcessor();
        patrolProcessor.InsertOrUpdatePatrol(SelectedPatrol);
        RefreshPatrolList();
    }

我想在这里实现的是添加一行并直接在我的binded属性SelectedPatrol的viewmodel中检索它,而不必选择我的行。

目前,当我点击我的行按钮时,我的viewmodel端只有一个空对象。但是如果我离开当前的选择然后按下新行中的按钮,那么我的对象就会填满。 我错过了什么吗?

提前感谢您的回答。

Cya guyz。

0 个答案:

没有答案