こんにちは、バインディングに問題があります。データ グリッドを 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"];