【问题标题】:Dynamic data matrix WPF动态数据矩阵 WPF
【发布时间】:2010-11-09 20:46:58
【问题描述】:

我想创建一个完全动态的数据矩阵。例如,

       Column1 Column2 Column3....
id1      id11    id12     id13...
id2      id21    id22     id23...
.         .        .        .
.         .        .        .

谁能帮我编写 XAML 中的代码,以上述方式显示数据?我的意思是我不确定我是否应该使用 listview 或 datagrid 或其他任何东西来显示数据。所以如果有人可以使用一些示例代码并帮助我解决它..

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您可能可以使用我对this 问题的回答。它是一个子类 DataGrid,用于显示、编辑和数据绑定 1D 或 2D 数组和动态大小的列表。可以从here下载。

    假设您将这个二维字符串数组作为属性

    public string[][] String2DArray { get; set; }
    

    然后您可以通过添加对 DataGrid2DLibrary.dll 的引用并将其绑定到 DataGrid2D 并添加命名空间

    xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"
    
    <dg2d:DataGrid2D Name="c_dataGrid2D" 
                     UseModifiedDataGridStyle="True" 
                     ItemsSource2D="{Binding String2DArray}"/>
    

    输出将如下所示

    【讨论】:

      【解决方案2】:

      本文主要展示如何将 WPF ListView 绑定到 DataMatrix(具有动态列的未定义数据源),其中 ListView 列直到运行时才能确定。

      http://www.codeproject.com/KB/WPF/WPF_DynamicListView.aspx

      【讨论】:

        【解决方案3】:

        你可以在Binding a ListView to a DataMatrix试试这篇文章

        【讨论】:

          【解决方案4】:

          是的,听起来你可以很好地利用&lt;Grid&gt; 标签。所以,复制你的例子:

          <Grid>  
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition Height="25" />
            <RowDefinition Height="25" />
            <RowDefinition Height="25" />
            <RowDefinition Height="25" />
            <RowDefinition Height="25" />
          </Grid.RowDefinitions>
          
          <TextBlock Grid.Column="1" Grid.Row="0">Column1</TextBlock>
          <TextBlock Grid.Column="2" Grid.Row="0">Column2</TextBlock>
          <TextBlock Grid.Column="3" Grid.Row="0">Column3</TextBlock>
          
          <TextBlock Grid.Column="0" Grid.Row="1">id1</TextBlock>
          <TextBlock Grid.Column="1" Grid.Row="1">id11</TextBlock>
          <TextBlock Grid.Column="2" Grid.Row="1">id12</TextBlock>
          <TextBlock Grid.Column="3" Grid.Row="1">id13</TextBlock>
          
          <TextBlock Grid.Column="0" Grid.Row="2">id2</TextBlock>
          <TextBlock Grid.Column="1" Grid.Row="2">id21</TextBlock>
          <TextBlock Grid.Column="2" Grid.Row="2">id22</TextBlock>
          <TextBlock Grid.Column="3" Grid.Row="2">id23</TextBlock>
          
          <TextBlock Grid.Column="0" Grid.Row="3">.</TextBlock>
          <TextBlock Grid.Column="1" Grid.Row="3">.</TextBlock>
          <TextBlock Grid.Column="2" Grid.Row="3">.</TextBlock>
          <TextBlock Grid.Column="3" Grid.Row="3">.</TextBlock>
          
          <TextBlock Grid.Column="0" Grid.Row="4">.</TextBlock>
          <TextBlock Grid.Column="1" Grid.Row="4">.</TextBlock>
          <TextBlock Grid.Column="2" Grid.Row="4">.</TextBlock>
          <TextBlock Grid.Column="3" Grid.Row="4">.</TextBlock>
          

          &lt;/Grid&gt;

          您还可以使用 WPF 4.0 中提供的 WPF 数据网格。如果您不能使用 4.0 框架,那么您仍然可以使用 .NET 3.5 SP1 的 codeplex 版本下的数据网格。见WPF Toolkit

          您也可以使用 ListView,是的。 WPF 非常灵活,因此您有很多选择。如上所述对 Grid 标记进行编程,或者使用 datagrid 或 listBox 或 listView 并在后 3 个选项上设置 ItemSource。

          【讨论】:

          • 他说他想创建完全动态的数据矩阵。如果有 200x200 大小的矩阵,你会用什么?
          • 嗯,XAML 可以动态创建。对动态 XAML 进行简单的 Google 搜索。查看此链接:msdn.microsoft.com/en-us/library/cc189044%28VS.95%29.aspx。但我会先尝试 WPF 4.0 中的 DataGrid。除非这两种选择,否则我会购买 Exceed 的数据网格。据说性能很好。
          • 那是正确的..我的 xaml 将被动态创建..是否可以使用 listview..你能告诉我如何..
          • XAML 应该非常简单。例如 不应该即时创建。它应该即时呈现漂亮的视图,但这是不同的故事。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-02
          • 2023-03-03
          • 1970-01-01
          • 2018-01-27
          • 2021-10-13
          • 2023-03-06
          相关资源
          最近更新 更多