如何从数据网格中选定行的单元格中获取值?

时间:2016-11-29 21:00:25

标签: mvvm datagrid

我看到这个问题已被问到哪里但是当我使用MVVM模式时,大多数答案似乎都以代码为中心。对于那些与我的情况有关的答案,我尝试了许多不同的建议,但我似乎错过了大局。

基本上我要做的是添加一个删除按钮,该按钮将从SQL数据库中删除数据网格中的所有选定行,或者为每一行添加删除按钮。我更喜欢有一个删除按钮,但我在每一行都打开一个删除按钮,我实际上已经完成了但仍然面临同样的问题,因为我需要从数据库中删除特定的记录ID以及删除它来自收藏。

XAML

            <DataGrid x:Name="licenseGrid"
                  ItemsSource="{Binding LoggedUsers}"
                  SelectedItem="{Binding SelectedLicense, Mode=TwoWay}"
                  Style="{DynamicResource DataGridStyle}"
                  Grid.Row="2"
                  Grid.Column="1"
                  Grid.ColumnSpan="6"
                  Height="535"
                  VerticalAlignment="Top"
                  IsReadOnly="True"
                  AutoGenerateColumns="False" 
                  HeadersVisibility="Column"
                  SelectionMode="Extended"
                  CanUserDeleteRows="True">

视图模型

        public ObservableCollection<MD_LoggedUsersModel> LoggedUsers
    {
        get { return _loggedUsers; }
        set { _loggedUsers = value; NotifyPropertyChanged(nameof(LoggedUsers)); }

        public string SelectedLicense
    {
        get
        {
            return _selectedLicense;
        }
        set
        {
            if (_selectedLicense != value)
            {
                _selectedLicense = value;
                OnPropertyChanged(nameof(SelectedLicense));
                RevokeSelected(_selectedLicense);
            }
            if (_selectedLicense == null)
            {
                LoadData();
            }
        }
    }

返回的值是LoggedUsers模型的名称。

如何获取每个单元格的值?

1 个答案:

答案 0 :(得分:0)

您需要将SelectedItem更新为与ObservableColleciton中的项目相同的类型。

public MD_LoggedUsersModel SelectedLicense
{
    get
    {
        return _selectedLicense;
    }
    set
    {
        if (_selectedLicense != value)
        {
            _selectedLicense = value;
        }
    }
}