【问题标题】:Is there a way to create and fill ListViews from one ObservableCollection有没有办法从一个 ObservableCollection 创建和填充 ListView
【发布时间】:2019-12-02 12:16:25
【问题描述】:

我有一个基于这些数据的可观察集合:

可能会添加更多新数据,因此我的数据中的行数可能会有所不同(有时是 2 个查询,有时是 5 个,...)

每一行都包含一个查询。

我想在 ListView 或 GridView 上显示每个查询结果:

        <StackPanel Grid.Row="1">
            <Label Content="{Binding Type1}"/>
            <Label Content="{Binding Definition1}"/>
            <ListView x:Name="ListRequete1" AlternationCount="2" ItemContainerStyle="{StaticResource alternatingStyle}"
                          ItemsSource="{Binding }" Margin="20" Height="170">
                <ListView.View>
                    <GridView x:Name="GridViewQuery1">

                   </GridView>
                </ListView.View>
            </ListView>
        </StackPanel>

是否可以做一个方法:

对于ObservableCollection的每一行,我运行查询,如果查询结果不为空,我创建一个listView并显示数据?

最终结果示例:

【问题讨论】:

  • 你的问题有点不清楚。您是说您想要一个显示一系列 SQL 样式查询命令的 ListView(绑定到 ObservableCollection),然后是另一个列表视图,如果选择并执行这些查询将显示其中一个查询的结果?
  • 我只是用一个例子来编辑。我的 observableCollection 包含“SQLQueries”表,该表本身包含多个查询。可观察集合的每一行都包含一个请求及其描述。我想在最终屏幕上显示每个查询的结果,每个查询都有它的列表视图。但是最多可以有20个请求,我不知道如何正确编码。
  • 我已根据您的问题提供了一个大纲答案,尽管在商业环境中我不提倡这样做,而是根据数据库可访问性使用 Datagrids 和 API/存储过程调用。

标签: c# wpf mvvm


【解决方案1】:

ListView 最简单地显示 ViewModel 中 ObservableCollection&lt;SQlQuery&gt; 的内容。 在哪里

class SQLQuery
{
  string Query{get; private set;}
  string Description {get; private set;}
}

然后,您在 ViewModel 中实现由 ListView ItemSelected 或 ItemTapped 事件触发的命令。这可以在您的代码中或通过绑定来处理。 例如

private void SQLQueryListView_OnItemTapped(object sender, ItemTappedEventArgs e)
{
    var param = (SQLQuery)e.Query;
    if (((ViewModel)BindingContext).RunQueryCommand.CanExecute(param))
    {
        ((ViewModel)BindingContext).RunQueryrCommand.Execute(param);
    }
}

如果每个查询都返回不同结构或类型的数据,那么在显示结果数据时就会出现困难。为此,您可能需要考虑为每组结果(每个结果都包含一个 ListView)实现一个特定的 ContentView,并根据运行的 Query 设置它们的可见性(如果任何时候只显示一个)

【讨论】:

  • 感谢您的建议,这对您有很大帮助!
猜你喜欢
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2019-11-19
相关资源
最近更新 更多