wpf多绑定sql和selectedItem
本文关键字:selectedItem sql 绑定 wpf | 更新日期: 2023-09-27 18:20:28
嗨,我有绑定问题。我将数据网格绑定到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"];
假设您想绑定到单个项,那么您的属性需要标记为public
:
public foo SelectedItem
{
...
您还应该检查DataContext
,因为ItemsSource
网格属性绑定到当前DataContext
(假设您的项目在网格中正确显示,这显然是一个集合),因此它不可能也是包含SelectedItem
属性的类型。
您希望DataContext
是同时包含项集合和SelectedItem
属性的类型的实例。例如视图模型,如果您使用的是MVVM设计模式。