WPF控件就像一个收藏夹吧

时间:2011-04-29 21:17:14

标签: wpf visual-studio

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

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

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

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

  1. 以预定方式添加
  2. 点击事件
  3. 使其可点击
  4. 当我不再需要它们时删除它们
  5. 我试过这个作为测试:

        <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>
    

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

1 个答案:

答案 0 :(得分: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>

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

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