我们刚刚使用 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。你有什么想法?