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"];

wpf多绑定sql和selectedItem

假设您想绑定到单个项,那么您的属性需要标记为public:

public foo SelectedItem 
{ 
    ...

您还应该检查DataContext,因为ItemsSource网格属性绑定到当前DataContext(假设您的项目在网格中正确显示,这显然是一个集合),因此它不可能也是包含SelectedItem属性的类型。

您希望DataContext是同时包含项集合和SelectedItem属性的类型的实例。例如视图模型,如果您使用的是MVVM设计模式。