WPF控件就像一个收藏夹吧

And*_*273 6 wpf visual-studio

我正在试图弄清楚收藏夹栏在IE/Firefox等中的控制方式.基本上你可以直观地存储书签,移动,删除.

我尝试用ToolBar做一些事情,虽然我可以添加按钮并让它们像我想的那样工作,但删除和重新排列它们是有问题的.我也尝试过listviews,但让它们正确显示却很难实现.也许像大图标视图,没有图标.

我只是在寻找一些人们可以将导航页面标记为回到他们之前看到的东西的东西.

编辑:
我想我甚至都不关心重新安排那么多.我只想弄清楚如何

  1. 逐步添加它们
  2. 通过单击事件使它们可单击
  3. 当我不再需要它们时删除它们

我试过这个测试:

    <ListView Grid.Row="1" Name="ListView1">
        <WrapPanel>
            <WrapPanel.ContextMenu>
                <ContextMenu>
                    <MenuItem Name="mnuDelete" Header="Delete" />
                </ContextMenu>
            </WrapPanel.ContextMenu>
            <Button Name="AddSite">+</Button>
            <ListViewItem Content="Test 1" />
            <ListViewItem Content="Test 2" />
        </WrapPanel>
    </ListView>
Run Code Online (Sandbox Code Playgroud)

但我甚至无法选择任何一个listviewitems,更不用说点击它们了.如果我右键单击一个,它不会告诉我在上下文菜单事件处理程序中单击了哪一个.
这令人沮丧,因为在WinForms中我已经完成了这项工作.我不能等到我捡到足够的东西才能让WPF开始点击.我觉得我再次从VB6迁移到VB.Net,但更重要的是.

And*_*273 1

所以我想我已经按照我想要的方式工作了,减去了重新排序。
我现在可以忍受。

XAML:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Tracks" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="20" />
            <RowDefinition Height="26" />
            <RowDefinition Height="265*" />
        </Grid.RowDefinitions>
        <Menu Name="Menu1" />
        <Frame Grid.Row="2" Name="Frame1" Source="PageSearchResults.xaml" />
        <StackPanel Orientation="Horizontal" Grid.Row="1">
        <Button Name="AddSite">+</Button>
        <ListView Name="ListView1" MouseDoubleClick="ListViewItem_MouseDoubleClick">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ContextMenu>
                <ContextMenu>
                    <MenuItem Name="mnuDelete" Header="Delete" />
                </ContextMenu>
            </ListView.ContextMenu>
        </ListView>
        </StackPanel>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

VB:

Class MainWindow 
    Dim bookmarks As New ArrayList

    Private Sub mnuDelete_click(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles mnuDelete.Click
        If Not ListView1.SelectedValue Is Nothing Then
            bookmarks.RemoveAt(ListView1.SelectedValue)
        End If
        ListView1.Items.RemoveAt(ListView1.SelectedIndex)
    End Sub

    Private Sub AddSite_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles AddSite.Click
        Dim i As Integer = 0
        Dim itmX As Integer
        Dim itm As New ListViewItem
        i = bookmarks.Add(Frame1.Content)
        itmX = ListView1.Items.Add(New DictionaryEntry(i, Frame1.Content.title))
        ListView1.DisplayMemberPath = "Value"
        ListView1.SelectedValuePath = "Key"
    End Sub

    Private Sub ListViewItem_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
        If Not ListView1.SelectedValue Is Nothing Then
            Frame1.Content = bookmarks(ListView1.SelectedValue)
        End If
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

这可以在带有框架和列表视图作为书签栏的 WPF 窗口中添加和删除书签。我愿意接受改进它的建议或更好的方法。