0

我无法确定为什么我的数据没有显示。这是我的 xaml.cs 文件。当它编译并运行良好时,我放弃了引用。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        string[] firstRecord = new string[3] {"1", "2", "3"};
        listview1.Items.Add(firstRecord);

    }
}

这是xml

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="300" Width="400">
<Grid>
    <ListView Name="listview1">

        <ListView.View>

            <GridView AllowsColumnReorder="true"
          ColumnHeaderToolTip="Employee Information">

                <GridViewColumn DisplayMemberBinding=
                      "{Binding Path=listview1.Items[0]}" 
                  Header="Column1" Width="100"/>

                <GridViewColumn DisplayMemberBinding=
                      "{Binding Path=listview1.Items[1]}" 
                  Header ="2nd Column" Width="100">
                </GridViewColumn>

                <GridViewColumn DisplayMemberBinding=
                      "{Binding Path=listview1.Items[2]}" 
                  Header="3rd Column" Width="100"/>
            </GridView>

        </ListView.View>
    </ListView>
</Grid>
</Window>
4

3 回答 3

2

如果您已将 an 添加ArrayListView您的Column绑定中,则只需成为您想要的索引

<ListView Name="listview1">
    <ListView.View>
        <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
            <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="Column1" Width="100"/>
            <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header ="2nd Column" Width="100" />
            <GridViewColumn DisplayMemberBinding="{Binding Path=[2]}" Header="3rd Column" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>

结果:

在此处输入图像描述

使用数据绑定

但是,您应该使用DataBinding您的ListView,因为UIWPF.

这是正确绑定字符串数组的示例

xml:

<Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Name="UI">
    <Grid>
        <ListView ItemsSource="{Binding ElementName=UI, Path=Records}">
            <ListView.View>
                <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
                    <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="Column1" Width="100"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header ="2nd Column" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding Path=[2]}" Header="3rd Column" Width="100"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Records.Add(new string[3] { "1", "2", "3" });
        Records.Add(new string[3] { "10", "20", "30" });
        Records.Add(new string[3] { "100", "200", "300" });
    }

    private ObservableCollection<string[]> _records = new ObservableCollection<string[]>();
    public ObservableCollection<string[]> Records
    {
        get { return _records; }
        set { _records = value; }
    }
}

结果

在此处输入图像描述

于 2013-03-07T00:40:17.193 回答
0

Listviews 使用字符串数组不会给你很好的结果。我会创建一个对象并绑定到它,如下所示:

class Item
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
    public string Item3 { get; set; }
}

然后你可以像这样添加到你的 UI 中:

listview1.Items.Add(new Item() { Item1 = "1", Item2 = "2", Item3 = "3" });

然后将每一列绑定到对象的字符串属性:

<ListView Name="listview1">
    <ListView.View>
        <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
            <GridViewColumn DisplayMemberBinding="{Binding Item1}"
            Header="Item1" Width="100"/>
            <GridViewColumn  DisplayMemberBinding="{Binding Item2}"
            Header ="Item2" Width="100"/>
            <GridViewColumn   DisplayMemberBinding="{Binding Item3}"
            Header="Item3" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>
于 2013-03-07T00:05:27.090 回答
-1

你的绑定是错误的。

您绑定第一列:

{Binding Path=listview1.Items[0]}

它将包含 {"1", "2", "3"} 而不是 "1" 因为 {"1", "2", "3"} 是您作为第一项添加到项目列表中的字符串数组.

会更好

{Binding Path=listview1.Items[0][0]}

第一个,但这将始终只绑定您的第一个列表项。

但是你现在肯定看到了错误吗?

也许如果你只绑定

{Binding Path=listview1.Items}

控件知道要做什么,因为二维数据将适合列表视图的二维数据模式。(但我还没有使用它,也不确切知道。)

于 2013-03-06T23:57:37.990 回答