syncfusion-wpf-splitbutton — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-splitbutton (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Syncfusion WPF SplitButton (SplitButtonAdv) is a combination of a button and a menu control. The button provides a default action, while clicking the arrow displays a dropdown list for additional selections. This control is ideal for scenarios where you need both a primary action and alternative options.
Use this skill when you need to:
SplitButtonAdv
├── Primary Button (default action)
│ ├── Label (text)
│ ├── Icon (SmallIcon/LargeIcon/IconTemplate)
│ └── Command (ICommand binding)
└── Dropdown Arrow (opens menu)
└── DropDownMenuGroup (container)
├── DropDownMenuItem (standard items)
│ ├── Header (text)
│ ├── Icon (image)
│ ├── IsCheckable (checkbox support)
│ └── Command (ICommand binding)
└── MoreItems (custom UIElement items)This skill uses progressive disclosure. Read the appropriate reference file based on your implementation needs:
📄 Read: references/getting-started.md
When to read: Setting up a new splitbutton, need basic configuration
Topics covered:
📄 Read: references/dropdown-menu-items.md
When to read: Configuring menu item appearance, adding custom items, enabling scrollbars
Topics covered:
📄 Read: references/data-binding.md
When to read: Implementing MVVM patterns, binding collections to dropdown items
Topics covered:
📄 Read: references/command-binding.md
When to read: Implementing command patterns, handling button/menu item actions
Topics covered:
📄 Read: references/dropdown-configuration.md
When to read: Controlling dropdown position, handling events, enabling multiline text
Topics covered:
📄 Read: references/customization.md
When to read: Applying themes, customizing appearance, creating templates
Topics covered:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf">
<Grid>
<syncfusion:SplitButtonAdv Label="Colors"
SizeMode="Normal"
Click="SplitButton_Click">
<syncfusion:DropDownMenuGroup>
<syncfusion:DropDownMenuItem Header="Red"
Click="MenuItem_Click"/>
<syncfusion:DropDownMenuItem Header="Green"
Click="MenuItem_Click"/>
<syncfusion:DropDownMenuItem Header="Blue"
Click="MenuItem_Click"/>
</syncfusion:DropDownMenuGroup>
</syncfusion:SplitButtonAdv>
</Grid>
</Window>using Syncfusion.Windows.Tools.Controls;
private void SplitButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Primary action executed");
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var menuItem = sender as DropDownMenuItem;
MessageBox.Show($"Selected: {menuItem.Header}");
}<syncfusion:SplitButtonAdv Label="Country" SizeMode="Normal">
<syncfusion:DropDownMenuGroup ItemsSource="{Binding Countries}">
<syncfusion:DropDownMenuGroup.ItemTemplate>
<DataTemplate>
<syncfusion:DropDownMenuItem
Header="{Binding Name}"
Command="{Binding DataContext.SelectCountryCommand,
RelativeSource={RelativeSource AncestorType=syncfusion:SplitButtonAdv}}"
CommandParameter="{Binding}">
<syncfusion:DropDownMenuItem.Icon>
<Image Source="{Binding FlagIcon}"/>
</syncfusion:DropDownMenuItem.Icon>
</syncfusion:DropDownMenuItem>
</DataTemplate>
</syncfusion:DropDownMenuGroup.ItemTemplate>
</syncfusion:DropDownMenuGroup>
</syncfusion:SplitButtonAdv>public class ViewModel : NotificationObject
{
private bool _canPerformAction = true;
public DelegateCommand<object> ClickCommand { get; set; }
public bool CanPerformAction
{
get => _canPerformAction;
set
{
_canPerformAction = value;
ClickCommand.RaiseCanExecuteChanged();
RaisePropertyChanged(nameof(CanPerformAction));
}
}
public ViewModel()
{
ClickCommand = new DelegateCommand<object>(
ExecuteAction,
CanExecuteAction);
}
private bool CanExecuteAction(object parameter) => CanPerformAction;
private void ExecuteAction(object parameter)
{
MessageBox.Show($"Action executed: {parameter}");
}
}<syncfusion:SplitButtonAdv Label="Action"
Command="{Binding ClickCommand}"
CommandParameter="Primary Action">
<!-- Dropdown items -->
</syncfusion:SplitButtonAdv><Window.Resources>
<DataTemplate x:Key="customIconTemplate">
<Grid Width="32" Height="32">
<Path Data="M10,0 L20,10 L10,20 L0,10 Z"
Fill="#FF3A3A38"
Stretch="Fill"/>
</Grid>
</DataTemplate>
</Window.Resources>
<syncfusion:SplitButtonAdv Label="Custom Icon"
SizeMode="Large"
IconTemplate="{StaticResource customIconTemplate}">
<!-- Dropdown items -->
</syncfusion:SplitButtonAdv><syncfusion:SplitButtonAdv Label="Options" SizeMode="Normal">
<syncfusion:DropDownMenuGroup MaxHeight="200"
ScrollBarVisibility="Visible"
IconBarEnabled="True">
<syncfusion:DropDownMenuItem Header="Option 1"
IsCheckable="True"
IsChecked="True"/>
<syncfusion:DropDownMenuItem Header="Option 2"
IsCheckable="True"/>
<syncfusion:DropDownMenuItem Header="Option 3"
IsCheckable="True"/>
<!-- More items... -->
</syncfusion:DropDownMenuGroup>
</syncfusion:SplitButtonAdv>| Property | Type | Description |
|---|---|---|
Label | string | Text displayed on the button |
SizeMode | SizeMode | Size mode: Small, Normal, or Large |
SmallIcon | ImageSource | Icon for Small/Normal modes |
LargeIcon | ImageSource | Icon for Large mode |
IconTemplate | DataTemplate | Custom icon template (overrides SmallIcon/LargeIcon) |
IconTemplateSelector | DataTemplateSelector | Dynamic icon template selection |
IconWidth | double | Width of the icon |
IconHeight | double | Height of the icon |
Command | ICommand | Command for primary button click |
CommandParameter | object | Parameter passed to Command |
DropDirection | DropDirection | Popup position: Left, Right, BottomLeft, etc. |
IsMultiLine | bool | Enable multiline text in Large mode |
IsDefault | bool | Activate button with Enter key |
| Property | Type | Description |
|---|---|---|
ItemsSource | IEnumerable | Data source for menu items |
ItemTemplate | DataTemplate | Template for menu item rendering |
IconBarEnabled | bool | Show/hide vertical icon bar |
ScrollBarVisibility | ScrollBarVisibility | Scrollbar visibility for long lists |
IsResizable | bool | Enable gripper for resizing popup |
MaxHeight | double | Maximum height of dropdown popup |
MoreItems | ObservableCollection<UIElement> | Custom items at bottom of menu |
IsMoreItemsIconTrayEnabled | bool | Icon bar for custom items |
| Property | Type | Description |
|---|---|---|
Header | object | Text or content of menu item |
Icon | object | Icon displayed before header |
IsCheckable | bool | Enable checkbox for item |
IsChecked | bool | Checked state of item |
Command | ICommand | Command for menu item click |
CommandParameter | object | Parameter passed to Command |
Primary action saves in default format, dropdown offers alternative formats (PDF, Excel, CSV).
Primary action sends to default recipient, dropdown lists alternative recipients.
Primary action applies last filter, dropdown shows available filter presets.
Primary action exports to default type, dropdown offers various export formats.
Problem: Icons not displaying correctly Solution: Check icon priority: IconTemplate > LargeIcon > SmallIcon. Ensure correct size mode is set.
Problem: Commands not executing Solution: Verify CanExecute returns true. Check DataContext binding for RelativeSource.
Problem: Dropdown items not showing Solution: Ensure DropDownMenuGroup contains DropDownMenuItem elements. Check ItemTemplate binding.
Problem: Events not firing Solution: Verify event handler names match in code-behind. Check for cancellation in Opening/Closing events.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.