0

我想将一些项目添加到作为网格视图的列表视图中。我想通过代码来完成它而不实现绑定选项,只需将值添加到某种单元格集。
我知道这不是 WPF 方式,但我迫切需要这样做,我似乎找不到我正在寻找的答案。
我查看了多绑定、转换器和常规绑定,但它不会给我现在需要的答案。

甚至可能吗?
如果是这样,我该怎么做?

4

3 回答 3

1

你可以用 aDataGrid代替 aListView吗?然后你可以设置AutoGenerateColumns为true(甚至默认为true)。

<DataGrid x:Name="myDataGrid" AutoGenerateColumns="True"/>

然后在后面的代码中做这样的事情:

myDataGrid.Items = new List<MyDataType>();
foreach(var item in itemsToAdd){
    myDataGrid.Items.Add(item);
}

或更短:

myDataGrid.ItemsSource = myListOfItems;
于 2013-01-11T12:35:51.743 回答
1

您需要像“[0]”这样的索引绑定。

<Grid>
    <ListView x:Name="lv" />
</Grid>



lv.Items.Clear();
var gv = new GridView();
lv.View = gv;

var columns = new List<string> { "col1", "col2" };
for(int index = 0; index < columns.Count; index++)
{
    gv.Columns.Add(new GridViewColumn
    {
        Header = columns[index],
        DisplayMemberBinding = new Binding("[" + index.ToString() + "]")
    });
}

// Populate list
var row1 = new List<string> { "(1, 1)", "(2, 1)" };
var row2 = new List<string> { "(1, 2)", "(2, 2)" };
lv.Items.Add(row1);
lv.Items.Add(row2);
于 2017-03-27T02:46:49.460 回答
0

不要纠结于是否加载代码隐藏中的控件。我参与过主要的 Silverlight 项目,其中混合了两种操作。

public MainWindow()
{
    InitializeComponent();

    lvPrimary.ItemsSource = new List<string> { "Alpha", "Beta", "Gamma" };

}

Xaml 看起来像这样:

<Window x:Class="WPFStackOverflow.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">
    <Grid>
        <ListView Name="lvPrimary" Width="200"/>
    </Grid>
</Window>
于 2013-01-11T12:36:02.290 回答