0

こんにちは、バインディングに問題があります。データ グリッドを SQL クエリの結果にバインドしましたが、selectedItem をバインドする方法がわかりません。のようなものが欲しいですSelectedItem.a。私の質問は、複数のものにバインドする方法ですか?

これは私がバインドしたコードですSelctedItemが、これは機能していません。

XAML:

<DataGrid  Name="grid" ItemsSource ="{Binding}" SelectedItem ="{Binding Path=SelectedItem Mode=TwoWay}" AutoGenerateColumns="False" VerticalAlignment="Top">
    <DataGrid.Columns >
        <DataGridTextColumn Header="A" Binding="{Binding Path=a, Mode=TwoWay}" Visibility="Hidden"/>
        <DataGridTextColumn Header="B" Binding="{Binding Path=b, Mode=TwoWay}" />
        <DataGridTextColumn Header="D" Binding="{Binding Path=c, Mode=TwoWay}" />
    </DataGrid.Columns>
    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <EventSetter Event="MouseDoubleClick" Handler="selectRow"/>
        </Style>
    </DataGrid.ItemContainerStyle>

</DataGrid>

SelectedItem意味:

 searchPizzeria _selectedItem;
 public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
       public foo SelectedItem {
            get { return _selectedItem; }
            set {
                throw new Exception();//dont rise
                this._selectedItem = value;
                this.OnPropertyChanged("SelectedItem");
             }
        }
        private void OnPropertyChanged(string propertyName){
            var handler = this.PropertyChanged;
            if (handler != null) {
                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }

モデル:

public class foo {
    public string a { get; set; }
    public string b { get; set; }
    public string c { get; set; }
}

編集。拘束力がない理由がわかりません。SelectedItem または XAML 定義を持つものでなければなりません。

編集グリッドにデータを設定する方法

 adapter = new Npgsql.NpgsqlDataAdapter(sql, conn);
            adapter.SelectCommand.Parameters.AddWithValue("@foo", A_comboBox.Text);
            dataTable = new DataTable();
            adapter.Fill(dataTable);
            grud.ItemsSource = dataTable.DefaultView;

最初のソリューションを編集しますが、非表示のデータにアクセスできません

   DataRowView row = (DataRowView)grid.SelectedItems[0];
    var x = row["Id_user"];
4

1 に答える 1