|
#MainWindow.xaml
<Window>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Syncfusion.Themes.Office2016White.WPF;component/Tools/MenuAdv/MenuAdv.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:StyleConverter x:Key="StyleConverter"/>
<Style x:Key="MenuItemAdvCustomStyle" TargetType="syncfusion:MenuItemAdv">
<Setter Property="Header" Value="{Binding Header}" />
<Setter Property="Icon" Value="{Binding Icon}" />
<Setter Property="InputGestureText" Value="{Binding InputGesture}" />
<Setter Property="ItemsSource" Value="{Binding Items}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSeparator}" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<syncfusion:MenuItemSeparator />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</Window.Resources>
<syncfusion:MenuAdv x:Name="MenuAdv" BorderThickness="0" ItemsSource="{Binding Items}" ItemContainerStyle="{Binding Path=(sfSkinManager:SfSkinManager.VisualStyle), RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource StyleConverter}}">
</syncfusion:MenuAdv>
</Window>
#Converters.cs
public class StyleConverter : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MainWindow window = Application.Current.MainWindow as MainWindow;
Style basestyle = new Style();
Style itemcontainerstyle = null;
if (window != null && window.Resources != null && window.Resources.MergedDictionaries != null && window.Resources.MergedDictionaries.Count > 0)
{
ResourceDictionary rdic = window.Resources.MergedDictionaries[0] as ResourceDictionary;
itemcontainerstyle = window.Resources["MenuItemAdvCustomStyle"] as Style;
//Office2016White style
basestyle = rdic["MetroMenuItemAdvStyle"] as Style;
if (basestyle != null)
{
foreach (Setter setter in basestyle.Setters)
{
var isExist = itemcontainerstyle.Setters.ToList().Any(item => (item as Setter).Property.Name == setter.Property.Name);
if (!isExist)
itemcontainerstyle.Setters.Add(setter);
}
}
}
return itemcontainerstyle;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
|