Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wpf:如何创建自定义ListBox控件_C#_Wpf_Xaml_Listbox_Wpf Controls - Fatal编程技术网

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

C# Wpf:如何创建自定义ListBox控件,c#,wpf,xaml,listbox,wpf-controls,C#,Wpf,Xaml,Listbox,Wpf Controls,我想在wpf中创建一个菜单栏,就像在网站上一样。它应该有不同的菜单项,每次点击你都会进入另一个页面。主要的一点是,当鼠标悬停或单击某个项目时,它应该更改边框。因此,我认为定制列表框将是我的案例的最佳解决方案。我不想要usercontrol,它应该是自定义控件 我所拥有的: 我创建了一个从ListBox派生的类: public class MenuListBox : ListBox { public MenuListBox() { } } 并创建了一个资源字典来为列表框

我想在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>

在这一点上,我不知道如何继续。该框还应该触发一个事件,以便我可以在框架或其他内容中更改页面。有人知道一个好的解决方案或任何文章/教程吗?谢谢,WPF已经有一个菜单对象,所以不需要自定义控件。为菜单创建自定义样式,并将其添加到应用程序资源中

有关设置菜单样式的帮助,请参见此处: