如何:使用C#而不是使用XAML填充ListView

时间:2014-05-20 11:21:10

标签: c# xaml listview add dockpanel

如何:使用C#而不是使用XAML填充ListView

我想使用C#(WPF)来填充ListView,而不是使用XAML。原因是,我们在运行之前不知道元素的数量。

这是我正在使用的XAML代码:

<ListView Name="listView_BusinessContacts" SelectionMode="Single">
                <ListViewItem Selected="ListViewItem_Selected">
                    <DockPanel DockPanel.Dock="Top" Name="dockPanel_1">
                        <Image DockPanel.Dock="Left" Source="/X;component/Images/folder.png" Stretch="None" />
                        <Label Content="Test 123" DockPanel.Dock="Right" Name="label_1" />
                    </DockPanel>
                </ListViewItem>
            </ListView>

我的想法是先创建ListViewItem。之后,我可以创建DockPanel。但现在,我不知道如何将两个元素添加到DockPanel(此处:ImageLabel)。之后,我会将DockPanel添加到ListViewItem,而不是将ListViewItem添加到ListView

我希望,你明白我想做什么。

SynerCoder的解决方案:

public void SetListViewItems()
    {
        foreach (var item in File.ReadAllLines(@"C:\Companies\Companies.txt", Encoding.UTF8))
        {
            Image image = new Image();
            image.Source = new BitmapImage(new Uri(@"Images\folder.png", UriKind.Relative));
            image.Stretch = Stretch.None;

            Label label = new Label();
            label.Content = "Test 123";

            DockPanel.SetDock(image, Dock.Left);
            DockPanel.SetDock(label, Dock.Right);

            DockPanel dockPanel = new DockPanel();
            dockPanel.Children.Add(image);
            dockPanel.Children.Add(label);

            ListViewItem listViewItem = new ListViewItem();
            listViewItem.Content = dockPanel;

            listView_BusinessContacts.Items.Add(listViewItem);
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码创建列表视图,使用SetDock的静态DockPanel方法设置停靠位置。

var listView = new ListView();
foreach (var item in something)
{
    var image = new Image();
    image.Source = ...;
    image.Stretch = Stretch.None;

    var label = new Label();
    label.Content = "Test 123";

    DockPanel.SetDock(image, Dock.Left);
    DockPanel.SetDock(label, Dock.Right);

    var dockPanel = new DockPanel();
    dockPanel.Children.Add(image);
    dockPanel.Children.Add(label);
    var item = new ListViewItem();
    item.Content = dockPanel;

    listView.Items.Add(item);
}