C# 从页面在ListView菜单中添加项(WPF)
我有一个汉堡包菜单,它是用ListView实现的。这个菜单在我的主窗口上。我需要从页面在这个ListView中添加新项目。当用户点击按钮时,它会在ListView中添加新项目,其中包含来自文本框的数据。下面是菜单代码 XAMLC# 从页面在ListView菜单中添加项(WPF),c#,wpf,listview,menu,add,C#,Wpf,Listview,Menu,Add,我有一个汉堡包菜单,它是用ListView实现的。这个菜单在我的主窗口上。我需要从页面在这个ListView中添加新项目。当用户点击按钮时,它会在ListView中添加新项目,其中包含来自文本框的数据。下面是菜单代码 XAML 您的ListView应该设置其ItemsSource属性。然后,您可以使用DataTemplate来显示项目。您还需要某种ViewModel来保存您的收藏。这会让你的生活变得更轻松 您的视图模型: public class HamburgerMenuViewModel {
您的
ListView
应该设置其ItemsSource
属性。然后,您可以使用DataTemplate来显示项目。您还需要某种ViewModel
来保存您的收藏。这会让你的生活变得更轻松
您的视图模型
:
public class HamburgerMenuViewModel
{
public ObservableCollection<NameItem> MenuItems { get; } = new ObservableCollection<NameItem>();
}
视图现在将有一个DataTemplate,它只允许您一次指定列表中项目的外观:
<HamburgerMenu>
<HamburgerMenu.DataContext>
<local:HamburgerMenuViewModel></local:HamburgerMenuViewModel>
</HamburgerMenu.DataContext>
<ListView x:Name="ListViewMenu"
Foreground="#FF5C99D6"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionChanged="ListViewMenu_SelectionChanged"
ItemsSource="{MenuItems}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type NameItem}">
<StackPanel Orientation="Horizontal"
Height="60">
<TextBlock Text="{Binding Name}"
VerticalAlignment="Center"
Margin="20 10"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</HamburgerMenu>
列表视图
将ItemsSource设置为DataContext的ObservableCollection
。修改此集合时,ui将更新以反映集合
DataTemplate
本质上是告诉ListView
如何显示每个项目。在DataTemplate
中,DataContext
是列表中的一项,而不是ListView的DataContext
,谢谢您的回复。我是WPF新手(我正在尝试将程序从WinForms重写为WPF)。你能解释一下标签是从哪里来的吗?(对不起,我的英语)。如果它是某个框架,我就不使用框架来实现菜单。@Ricarnev这只是我扔进去的一个标记,但是把DataContext
放在ListView
的父项上。
public class HamburgerMenuViewModel
{
public ObservableCollection<NameItem> MenuItems { get; } = new ObservableCollection<NameItem>();
}
public class NameItem
{
public string Name { get; set; }
}
<HamburgerMenu>
<HamburgerMenu.DataContext>
<local:HamburgerMenuViewModel></local:HamburgerMenuViewModel>
</HamburgerMenu.DataContext>
<ListView x:Name="ListViewMenu"
Foreground="#FF5C99D6"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionChanged="ListViewMenu_SelectionChanged"
ItemsSource="{MenuItems}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type NameItem}">
<StackPanel Orientation="Horizontal"
Height="60">
<TextBlock Text="{Binding Name}"
VerticalAlignment="Center"
Margin="20 10"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</HamburgerMenu>