Skip to main content

syncfusion-wpf-splitbutton

Implement Syncfusion WPF SplitButton (SplitButtonAdv) with dropdown menus, command binding, and data binding. Use this when working with split buttons, dropdown buttons with menus, or button-menu combinations. This skill covers SplitButtonAdv setup, default actions with dropdown menus, command binding, MVVM implementation, and data-bound dropdown items in WPF applications.

Datos de origen

Repositorio
syncfusion/wpf-ui-components-skills
Última actividad en el origen
6 de julio de 2026 a las 07:21
Idioma detectado de SKILL.md
inglés
Estrellas
5
Forks
2

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
7 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
syncfusion-wpf-splitbutton
description
Implement Syncfusion WPF SplitButton (SplitButtonAdv) with dropdown menus, command binding, and data binding. Use this when working with split buttons, dropdown buttons with menus, or button-menu combinations. This skill covers SplitButtonAdv setup, default actions with dropdown menus, command binding, MVVM implementation, and data-bound dropdown items in WPF applications.
metadata
{"author":"Syncfusion Inc","version":"34.1.29"}
# Implementing Syncfusion WPF SplitButton 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. ## When to Use This Skill Use this skill when you need to: - **Implement WPF splitbutton controls** with default actions and dropdown menus - **Create button-dropdown combinations** for multiple action selections - **Build data-bound dropdown menus** with ItemsSource binding - **Implement command patterns** with ICommand and MVVM architecture - **Configure dropdown menu items** with icons, checkboxes, and custom items - **Handle splitbutton events** like dropdown opening/closing and item clicks - **Apply size modes** (Small, Normal, Large) with custom icons - **Customize splitbutton appearance** with themes and templates - **Support multiline text** in large button modes - **Enable/disable actions** using CanExecute command logic ## Component Overview ### Key Features - **Dual Action**: Primary button action + dropdown menu for alternatives - **Data Binding**: Full ItemsSource and DataTemplate support for MVVM - **Command Binding**: ICommand support for button and menu items with CanExecute - **Size Modes**: Small (icon only), Normal (icon + text), Large (large icon + text) - **Icon Templates**: Support for path data, font icons, and custom templates - **Customizable Menu Items**: Icons, checkboxes, scrollbars, and custom content - **Dropdown Direction**: Control popup position (Left, Right, BottomLeft, etc.) - **Events**: Opening, Opened, Closing, Closed, Click, IsCheckedChanged - **Theming**: Built-in themes via SfSkinManager and custom theme support - **Multiline Text**: Display multi-line labels in large size mode ### Control Structure ``` 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) ``` ## Documentation and Navigation Guide This skill uses progressive disclosure. Read the appropriate reference file based on your implementation needs: ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) When to read: Setting up a new splitbutton, need basic configuration **Topics covered:** - Installation and assembly deployment (Syncfusion.Shared.WPF) - Adding control via designer, XAML, or C# code - Setting label text and basic properties - Size modes: Small (icon only), Normal (icon + text), Large (large icon + text) - Icon templates and icon template selectors for custom icons - Setting images using SmallIcon and LargeIcon properties - Configuring icon width and height - IsDefault mode for Enter key activation - Adding menu items to DropDownMenuGroup ### Dropdown Menu Items Configuration 📄 **Read:** [references/dropdown-menu-items.md](references/dropdown-menu-items.md) When to read: Configuring menu item appearance, adding custom items, enabling scrollbars **Topics covered:** - Setting icons for dropdown menu items - Icon bar visibility (IconBarEnabled property) - Scrollbar visibility for large menu lists - Checkable dropdown menu items (IsCheckable/IsChecked) - Resizing dropdown menu with gripper (IsResizable) - Adding custom dropdown menu items via MoreItems property - Icon bar visibility for custom items (IsMoreItemsIconTrayEnabled) ### Data Binding 📄 **Read:** [references/data-binding.md](references/data-binding.md) When to read: Implementing MVVM patterns, binding collections to dropdown items **Topics covered:** - Creating model classes for menu item data - Creating view models with observable collections - Binding ItemsSource to DropDownMenuGroup - Using ItemTemplate and DataTemplate for menu items - Setting DataContext for data binding - Binding commands from view model to menu items - Complete MVVM implementation examples - DelegateCommand pattern for ICommand ### Command Binding 📄 **Read:** [references/command-binding.md](references/command-binding.md) When to read: Implementing command patterns, handling button/menu item actions **Topics covered:** - Command property overview and ICommand interface - CommandParameter for passing data to command handlers - DelegateCommand implementation pattern - Binding commands to SplitButtonAdv primary button - Binding commands to dropdown menu items - CanExecute logic for enabling/disabling actions - RaiseCanExecuteChanged for dynamic command state - Complete command binding examples with NotificationObject ### Dropdown Configuration and Events 📄 **Read:** [references/dropdown-configuration.md](references/dropdown-configuration.md) When to read: Controlling dropdown position, handling events, enabling multiline text **Topics covered:** - Dropdown direction options (Left, Right, BottomLeft, BottomRight, TopLeft, TopRight) - DropDownOpening and DropDownOpened events - DropDownClosing and DropDownClosed events - Click event for button and menu items - IsCheckedChanged event for checkable items - Multiline text support (IsMultiLine property) - Event handler implementation patterns ### Customization and Theming 📄 **Read:** [references/customization.md](references/customization.md) When to read: Applying themes, customizing appearance, creating templates **Topics covered:** - WPF styles and templates overview - Editing appearance in Expression Blend - Editing appearance in Visual Studio - Creating ControlTemplate resources - Applying built-in themes with SfSkinManager - Creating custom themes using ThemeStudio - Template resource location options ## Quick Start Example ### Basic SplitButton with Dropdown Menu ```xaml <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> ``` ```csharp 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}"); } ``` ## Common Patterns ### Pattern 1: Data-Bound SplitButton with MVVM ```xaml <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> ``` ### Pattern 2: Command Binding with CanExecute ```csharp 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}"); } } ``` ```xaml <syncfusion:SplitButtonAdv Label="Action" Command="{Binding ClickCommand}" CommandParameter="Primary Action"> <!-- Dropdown items --> </syncfusion:SplitButtonAdv> ``` ### Pattern 3: Large Button with Icon Template ```xaml <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> ``` ### Pattern 4: Scrollable Dropdown with Checkable Items ```xaml <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> ``` ## Key Properties ### SplitButtonAdv Properties | 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 | ### DropDownMenuGroup Properties | 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 | ### DropDownMenuItem Properties | 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 | ## Common Use Cases ### Use Case 1: Save Button with Format Options Primary action saves in default format, dropdown offers alternative formats (PDF, Excel, CSV). ### Use Case 2: Send Button with Recipient Options Primary action sends to default recipient, dropdown lists alternative recipients. ### Use Case 3: Filter Button with Preset Filters Primary action applies last filter, dropdown shows available filter presets. ### Use Case 4: Export Button with Export Types Primary action exports to default type, dropdown offers various export formats. ## Troubleshooting Tips **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. ## Additional Resources - [GitHub Samples](https://github.com/SyncfusionExamples/wpf-splitbutton-examples) - [Syncfusion WPF Documentation](https://help.syncfusion.com/wpf/splitbutton/overview) - [Control Dependencies](https://help.syncfusion.com/wpf/control-dependencies#splitbutton)
Ver en GitHub