Wpf:如何创建自定义ListBox控件

时间:2016-04-19 12:16:19

标签: c# wpf xaml listbox wpf-controls

我想在wpf中创建一个类似于网站上的菜单栏。它应该有不同的菜单项,每次点击你会到达另一个页面。重点是,它应该在悬停或单击项目时更改边框。所以我认为自定义列表框对我的案例来说是最好的解决方案。我不想要usercontrol,它应该是一个自定义控件。

我拥有的: 我创建了一个派生自ListBox的类:

public class MenuListBox : ListBox
{
    public MenuListBox()
    {

    }
}

并创建了一个资源字典来模板列表框。我还将此作为合并字典添加到generic.xaml文件中。

<ResourceDictionary>

<Style TargetType="ListBoxItem">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListBoxItem">
                ...
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<Style TargetType="Controls:MenuListBox" BasedOn="{StaticResource {x:Type ListBox}}">
</Style>
</ResourceDictionary>

此时我不知道如何继续。该框也应该触发事件,以便我可以在框架或其他内容中更改页面。有谁知道一个好的解决方案或任何文章/教程?感谢

1 个答案:

答案 0 :(得分:0)

WPF已经有一个菜单对象,因此不需要自定义控件。为菜单创建自定义样式并将其添加到应用程序资源中。

请点击此处获取有关菜单样式的帮助:http://www.jimnuzzi.com/2008/06/29/wpf-xaml-menuitem-styles/