无法在我的DataGrid中使用类型化的DataRowView

时间:2013-10-21 08:07:21

标签: c# .net wpf prism

我们刚刚使用Prism开始了一个WPF项目。我们的问题是我们必须使用System.Data.DataRowView而不是DataGrid的类型版本。 我们正在使用这样的代码:

<DataGrid 
                    ItemsSource="{Binding Cars}" 
                    SelectedItem="{Binding ActiveCar}" 
                    AutoGenerateColumns="False" 
<!--[...]-->
<CheckBox Content="Four-wheel drive" IsChecked="{Binding TypedActiveCar.FourWheelDrive}"/>


<!--[...]-->

    private System.Data.DataRowView _activeCar;

    public System.Data.DataRowView ActiveCar
    {
        get { return _activeCar; }
        set
        {
            if (_activeCar!= value)
            {

                _activeCar= value;
                var fCarRow =
                    (_activeCar.Row as CarDS.F_CarRow);

                RaisePropertyChanged(() => ActiveCar);
                RaisePropertyChanged(() => TypedActiveCar);
            }
        }
    }

    public CarDS.F_CarRow TypedActiveCar
    {
        get
        {
            if (ActiveCar != null)
            {
                return ActiveCar.Row as CarDS.F_CarRow;
            }
            return null;
        }
    }

    public CarDS.F_CarDataTable Cars
    {
        get { return _data.F_Cars; }

        set
        {
            if (_data.F_Cars != value)
            {

                RaisePropertyChanged(() => Cars);
                RaisePropertyChanged(() => ActiveCar);
            }
        }
    }

此实现正在运行,但我更喜欢使用表中的类型版本作为我的SelectedItem。你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

DataRows,DataViews,DataRowViews和其他System.Data类型用于组织数据,并且不会对任何DataGrid内容(概念上除外)进行内部分析。此数据的显示旨在使开发人员易于使用,并使用自己的体系结构,与System.Windows.Controls命名空间分开。您可以将DataRowView中的信息转换为某种DataGridRow,但这是您可以做的最多。