Search code examples
c#wpfxamlbindingmahapps.metro

How to manually bind static Items to SplitButton (mahapps) via XAML


How do i manually add for example 2 items (buttons) from which the first is preselected via xaml? Like:

<controls:SplitButton SelectedIndex="0">
    <controls:SplitButton.Items>
        <Button Content="Button 1"/>
        <Button Content="Button 2"/>
    </controls:SplitButton.Items>
</controls:SplitButton>

Documentation tells me to use ItemsSource Binding but there is no example of the code behind.


Solution

  • This is the XAML:

    <controls:SplitButton x:Name="splitButton" 
            SelectedIndex="1" 
            HorizontalAlignment="Left" 
            VerticalAlignment="Top" 
            Grid.Column="1">
        <controls:SplitButton.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock HorizontalAlignment="Left" 
                            TextWrapping="Wrap" 
                            Text="{Binding Text}" 
                            VerticalAlignment="Top"/>
                </Grid>
            </DataTemplate>
        </controls:SplitButton.ItemTemplate>
    </controls:SplitButton>
    

    This is the code behind:

    class SplitButtonItem
    {
        public string Text { get; set; }
    }
    
    public MainWindow()
    {
        InitializeComponent();
    
        var button1 = new SplitButtonItem() { Text = "Item 01", };
        var button2 = new SplitButtonItem() { Text = "Item 02", };
        var buttonList = new List<SplitButtonItem>() 
        {
            button1, 
            button2,
        };
        splitButton.ItemsSource = buttonList;
    }
    

    This is how it look at runtime:

    This is how it look at runtime

    Is this what you're looking for?