Larry Dinh
Larry Dinh

Reputation: 387

Get data from datagrid to viewmodel

I have an usercontrol containing DataGrid (datagrid allow user edit on grid), but when i get collection data from datagrid through viewmodel property, but collection only get number of row but not get datagrid content.

View

<UserControl>
    <Grid>
        <DataGrid ItemsSource="{Binding}" SelectionUnit="CellOrRowHeader" CanUserAddRows="True" CanUserDeleteRows="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Day" Binding="{Binding Monday}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

ViewModel

public class RuleDetailViewModel : UserControlViewModelBase
{
    ObservableCollection<RuleDetailExpViewModel> _ruleDetailList;

    public RuleDetailViewModel()
    {
        _ruleDetailList = new ObservableCollection<RuleDetailExpViewModel> 
        { 
            new RuleDetailExpViewModel(), 
            new RuleDetailExpViewModel() 
        };
    }

    public ObservableCollection<RuleDetailExpViewModel> RuleDetailList
    {
        get { return _ruleDetailList; }
        set 
        { 
             _ruleDetailList = ruleDetailList;
            OnPropertyChanged("RuleDetailList");
        }
    }
}

I tried ItemsSource="{Binding RuleDetailList}" and ItemsSource="{Binding}" DataContext="{Binding RuleDetailList}" but unsucessfully.

How can i get data from view to viewmodel?

Sorry for my english

Upvotes: 0

Views: 1292

Answers (1)

HB MAAM
HB MAAM

Reputation: 4002

change your view to

<UserControl>
    <Grid>
        <DataGrid ItemsSource="{Binding RuleDetailList}" SelectionUnit="CellOrRowHeader" CanUserAddRows="True" CanUserDeleteRows="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Day" Binding="{Binding Monday}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

and the RuleDetailExpViewModel must contain the property Monday

Upvotes: 1

Related Questions