Я сделал очень простой макет со списком. Я добавляю кнопку в элементы списка и слушаю щелчок, чтобы вставить новый объект перед кнопкой.
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 добавить кнопки управления к списку (с тем преимуществом, что кнопка всегда последняя)
Что вы реализованным до сих пор для Pack1 и Pack2 Предметы? Покажите нам некоторые коды, чтобы мы могли видеть, где мы могли бы добавить некоторые идеи, чтобы вы могли понять, чего вы пытаетесь достичь. – Batuta
Я добавил код, но это просто эскиз. В этом коде его listview внутри listview, но это не имеет значения. Главный касторий - есть ли стандартный способ сделать это? – SkySurfer
Я думаю, что этот код только усложняет вопрос, потому что есть listview внутри listview. Реальный вопрос может быть рассмотрен даже до списка по умолчанию без каких-либо стилей. – SkySurfer