C#對WPF數據綁定的菜單插入Seperator分隔

WPF前臺代碼展示

<Window.Resources>
    <local:Source x:Key="src"/>
</Window.Resources>
<StackPanel>
    <Menu>
        <MenuItem Header="Animals" ItemsSource="{Binding Source={StaticResource src}}" />
    </Menu>
</StackPanel>

C#對WPF數據綁定

public class Source : ObservableCollection<object>
{
    public Source()
    {
        //Spiders
        Add("Golden Silk Spider");
        Add("Black Widow Spider");

        //BigCats
        Add("Jaguar");
        Add("African Wildcat");
        Add("Cheetah");

        //Amphibians
        Add("California Newt");
        Add("Tomato Frog");
        Add("Green Tree Frog");
    }
}

這種方式簡單易用,但有個問題,缺乏靈活性:比如說如果我們要根據不同的類別分組,通過seperator隔離,生成如下圖所示的菜單,這時該如何做呢?

我試過幾種方法,如設置ItemStyleSelecter,DataTemplate等,效果都不是很好,最後找到一種很簡單的方法:在數據源中直接插入Seperator即可。

public class Source : ObservableCollection<object>
{
    public Source()
    {
        
        Add("Golden Silk Spider");
        Add("Black Widow Spider");

        Add(new Separator());

        Add("Jaguar");
        Add("African Wildcat");
        Add("Cheetah");

        Add(new Separator());

        Add("California Newt");
        Add("Tomato Frog");
        Add("Green Tree Frog");
    }
}

這種方式簡單易用,並且能保持和系統主題樣式一致,是目前我知道的最好的方法瞭。ToobBar的Seperator也可以用這種方式生成。

到此這篇關於WPF菜單插入Seperator的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: