将DataGirdComboBoxColumn绑定到DataSet不起作用

时间:2015-06-10 15:56:35

标签: wpf datagrid dataset

我想在数据网格中创建一个简单的主 - 详细视图 我尝试将DataGirdComboBoxColumn绑定到DataSet,但它无效。

这是我的xaml代码:

<DataGrid x:Name="DataGrid1" Grid.Column="0" Grid.Row="0" AlternatingRowBackground="#FFF0F0F0" ItemsSource="{Binding}" Height="420" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding AirplaneID}" IsReadOnly="True" MinWidth="30"/>
        <DataGridTextColumn Header="Model" Binding="{Binding Model}" IsReadOnly="True" Width="Auto" MinWidth="160"/>
        <DataGridTextColumn Header="Fuel" Binding="{Binding Fuel}" MinWidth="50" />

        <DataGridComboBoxColumn x:Name="ComboBoxColumnPass" Header="Passenger" DisplayMemberPath="Name"
                                        SelectedValueBinding="{Binding AirplaneID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="AirplaneID"/>   
    </DataGrid.Columns>
    <DataGrid.ContextMenu>
        <ContextMenu>
            <MenuItem Command="ApplicationCommands.New" ToolTip="Fügt eine neue Zeile hinzu"/>
            <MenuItem Command="ApplicationCommands.Delete"  ToolTip="Löscht das ausgewählte Element"/>
        </ContextMenu>
    </DataGrid.ContextMenu>
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="5">
                <TextBlock FontSize="12" TextWrapping="Wrap" Text="{Binding Detail}" />
            </StackPanel>
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
</DataGrid>

这是我的C#代码:

namespace WpfApplicationAirplaneDB
{
    AirplaneDBDataSet AirplaneDataSet = new AirplaneDBDataSet();
    AirplaneDBDataSetTableAdapters.AirplaneTableAdapter AirTableAdapter = new AirplaneDBDataSetTableAdapters.AirplaneTableAdapter();
    AirplaneDBDataSetTableAdapters.PassengerTableAdapter PassTableAdapter = new AirplaneDBDataSetTableAdapters.PassengerTableAdapter();

    public MainWindow()
    {
        InitializeComponent();

        AirTableAdapter.Fill(AirplaneDataSet.Airplane);
        PassTableAdapter.Fill(AirplaneDataSet.Passenger);

        DataGrid1.ItemsSource = AirplaneDataSet.Airplane.DefaultView;
        ComboBoxColumnPass.ItemsSource = AirplaneDataSet.Passenger.DefaultView;

    }
}

这就是错误:

  

PresentationFramework.dll中出现未处理的“System.InvalidOperationException”类型异常   附加信息:TwoWay-oder OneWayToSource-Bindungen funktionieren nicht mitderschreibgeschütztenEigenschaft“AirplaneID”vom Typ“System.Data.DataRowView”。

(对不起德语异常)

1 个答案:

答案 0 :(得分:0)

似乎AirplaneID是只读的。要么使其可写,要么将绑定更改为OneWay。