c# - listview添加新的item控件

标签 c# wpf

我有一个 ListView ,想使用某种控件动态地将项目添加到其中。例如 enter image description here

如果“pack1”“pack2”是 ListViewItems,我希望有额外的(红色方 block )控件,它始终可见并在单击时添加新的“pack”项目。 所以这个任务是很标准的。通常是如何完成的?

更新 CompositeCollection似乎是一个不错的解决方案。

最佳答案

我用 ListView 做了一个非常简单的布局。我向 listview 项目添加一个按钮,并听到单击以在按钮之前插入一个新对象。

public MainWindow()
    {
        InitializeComponent();
        listViewtst.Items.Add("test");
        listViewtst.Items.Add("test2");
        Button btn = new Button();
        btn.Content = "+";
        btn.Click += Btn_Click;
        listViewtst.Items.Add(btn);
    }

    private void Btn_Click(object sender, RoutedEventArgs e)
    {
        listViewtst.Items.Insert(listViewtst.Items.Count - 1, "added by the btn");

    }

不确定这是否是最好的解决方案,但如果没有人向我展示更好的方法,我会这样做 :)


其他解决方案:

代码隐藏

    /// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    private ObservableCollection<MyObject> _windows = new ObservableCollection<MyObject>();

    public MainWindow()
    {
        InitializeComponent();
        Windows.Add(new MyObject { Title = "Collection Item 1" });
        Windows.Add(new MyObject { Title = "Collection Item 2" });
    }

    private void Btn_Click(object sender, RoutedEventArgs e)
    {


    }

    public ObservableCollection<MyObject> Windows
    {
        get { return _windows; }
        set { _windows = value; }
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Windows.Add(new MyObject { Title = "From Btn" });
    }
}

public class MyObject
{
    public string Title { get; set; }
}

Xaml:

<Window x:Class="Move_To_Prd_Dev.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="246" Width="325" Name="UI">
<Window.Resources>
    <CollectionViewSource Source="{Binding ElementName=UI, Path=Windows}" x:Key="YourMenuItems"/>
</Window.Resources>
<Grid DataContext="{Binding ElementName=UI}">
    <ListBox x:Name="listTxt" HorizontalAlignment="Left" Height="163" Margin="10,29,0,0" VerticalAlignment="Top" Width="297">
        <ListBox.ItemsSource>
            <CompositeCollection>
                <CollectionContainer Collection="{Binding Source={StaticResource YourMenuItems}}" />
                <Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="button_Click"/>

            </CompositeCollection>
        </ListBox.ItemsSource>
    </ListBox>

</Grid>

这使用 CompositeCollection 将按钮控件添加到列表中(优点是按钮始终位于最后一个)

Result

关于c# - listview添加新的item控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726970/

相关文章:

wpf - 如何指定菜单项的访问键?

wpf - 刷新 OxyPlot 图表

c# - 如何从 getter 或 setter 调用异步方法?

c# - 在任务栏中实现单独的应用程序实例,如 Skype

c# - asp.net 上的 CSS 样式的 DropDownList

c# - .Net 是否有支持 html5 视频(WebRTC)的 Webbrowser 控件?

WPF。在 xaml 中对齐两个标签如何在基线上具有不同的大小

c# - 使用 MVVMCross 在 WPF 中捕获 OnExit 事件

c# - 克隆具有相似模式的样式的友好方式?

c# - 将项目绑定(bind)到 ListBox 多列