gpt4 book ai didi

wpf - 将 wpf listview 绑定(bind)到数据集......可能......?

转载 作者:行者123 更新时间:2023-12-02 08:27:55 25 4
gpt4 key购买 nike

我正在努力转向 Wpf,我只是在尝试将数据绑定(bind)到 lsitview 时陷入困境。我想将 ListView 数据绑定(bind)到数据集(数据集,因为我想在列中显示的数据属于不同的表)。我是附加我正在尝试使用的示例代码。它可以正常工作,但列表仅显示一行。可能出了什么问题。任何人都可以指导我完成。所有可用的示例都使用数据表。没有指定有关绑定(bind)到数据集的信息。请帮助..任何意见都将受到高度赞赏...提前致谢

我的Xaml

<Grid>
<TextBox Text="" Height="20" Width="100" HorizontalAlignment="Left" Margin="15,13,0,0" VerticalAlignment="Top"></TextBox>
<TextBox Text="" Height="20" Width="100" HorizontalAlignment="Left" Margin="15,42,0,0" VerticalAlignment="Top"></TextBox>
<ListView Margin="15,89,63,73" Name="lst" ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=T1/Name}"></GridViewColumn>
<GridViewColumn Header="Place" DisplayMemberBinding="{Binding Path=T2/Name}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<!--<Button Height="19" HorizontalAlignment="Right" Name="button2" VerticalAlignment="Top" Width="46" Margin="0,42,63,0" Click="button2_Click">Add</Button>-->
<Button Height="19" HorizontalAlignment="Right" Name="button1" VerticalAlignment="Top" Width="46" Click="button1_Click" Margin="0,43,63,0">Add</Button>

我的代码

 Dt1 = new DataTable("T1");
Dt1.Columns.Add("Name");
Dt1.Rows.Add("abc1");
Dt1.Rows.Add("abc2");
Dt2 = new DataTable("T2");
Dt2.Columns.Add("Name");
Dt2.Rows.Add("xyz1");
Dt2.Rows.Add("xyz1");
Ds = new DataSet();
Ds.Tables.Add(Dt1);
Ds.Tables.Add(Dt2);

lst.DataContext = Ds;

最佳答案

您好,我完全同意安迪和托马斯的观点。他们都优雅地解释了这个概念。

我仅展示仅对数据集执行相同操作的步骤。

MVVM(ModelView ViewModel)我不在这里讨论。

Xaml 看起来像这样

<Grid Name="myGrid" ShowGridLines="False">


<Label Height="28" Margin="12,5,0,0" Name="lblName" VerticalAlignment="Top" HorizontalAlignment="Left" Width="55">Name</Label>
<TextBox Height="23" Margin="73,8,85,0" Name="txtName" VerticalAlignment="Top" />
<Label Height="28" Margin="12,39,0,0" Name="lblPlace" VerticalAlignment="Top" HorizontalAlignment="Left" Width="55">Place</Label>
<TextBox Height="23" Margin="73,44,85,0" Name="txtPlace" VerticalAlignment="Top" />
<Button Height="23" HorizontalAlignment="Left" Margin="20,82,0,0" Name="btnAddRecord" VerticalAlignment="Top" Width="75" Click="btnAddRecord_Click">Add Record</Button>
<ListView Margin="31,119,27,45" Name="listView" *ItemsSource="{Binding}"*>

<ListView.View>

<GridView>

<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>

<GridViewColumn Header="Place" DisplayMemberBinding="{Binding Place}"/>


</GridView>
</ListView.View>
</ListView>
</Grid>

在.CS文件中创建一个数据集

private DataSet MyDataSet()
{
DataTable dtInformation1 = new DataTable();
dtInformation1.Columns.Add("Name");
dtInformation1.Columns.Add("Place");
dtInformation1.Rows.Add(txtName.Text, txtPlace.Text);


DataTable dtInformation2 = new DataTable();
dtInformation2.Columns.Add("Name");
dtInformation2.Columns.Add("Place");
dtInformation2.Rows.Add(txtName.Text + "2", txtPlace.Text + "2");

DataSet Ds = new DataSet();
Ds.Tables.Add(dtInformation1);
Ds.Tables.Add(dtInformation2);
return Ds;
}

接下来在按钮的点击事件中写入以下内容

private void btnAddRecord_Click(对象发送者, RoutedEventArgs e)

    {

**listView.ItemsSource = MyDataSet().Tables[0].DefaultView;
- OR -
listView.ItemsSource = MyDataSet().Tables[1].DefaultView;**
}

注意~您不能为 ListView 的源分配数据集。

为什么?你可能会问?数据集,简单来说,就是数据表的集合。

假设您有 5 个不同的数据表。并假设它们的列名和列号都不相同。

现在您已将所有这些分配给您的数据集。控件源如何知道它必须绑定(bind)哪个源?

为了克服这种情况,可以创建一个自定义数据表,其中包含这些离散数据表的所有列,并将值分配给该自定义数据表,然后绑定(bind)到源。

或者需要在数据源中显式指定数据表

但我总是更喜欢使用 MVVM 模式来进行此类操作。

关于wpf - 将 wpf listview 绑定(bind)到数据集......可能......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/961877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com