【问题标题】:Get data from datagrid to viewmodel从数据网格获取数据到视图模型
【发布时间】:2012-08-15 04:33:08
【问题描述】:

我有一个包含 DataGrid 的用户控件(datagrid 允许用户在网格上编辑),但是当我通过 viewmodel 属性从 datagrid 获取集合数据时,集合只获取行数但不获取 datagrid 内容。

查看

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

视图模型

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");
        }
    }
}

我尝试了 ItemsSource="{Binding RuleDetailList}" 和 ItemsSource="{Binding}" DataContext="{Binding RuleDetailList}" 但没有成功。

如何从视图获取数据到视图模型?

对不起我的英语

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    改变你的看法

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

    并且RuleDetailExpViewModel 必须包含属性Monday

    【讨论】:

    • 我试过 ItemsSource="{Binding RuleDetailList}" 和 ItemsSource="{Binding}" DataContext="{Binding RuleDetailList}" 但没有成功
    • 我现在试了一下,效果很好,只需将 ruleDetailList 更改为 value
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多