将Mahapps.Metro:IconPacks分配给代码后面的按钮

MoJ*_*oJo 1 c# code-behind mahapps.metro

我试图将任何Mahapps.Metro.IconPacks中的图标分别分配给一个带有文本的按钮.

如果我想使用新的IconPack,我该怎么做?

实际上,我需要将Mahapps.Metro.IconPacks.PackIconModernKind转换为VisualBrush或canvas,或者实际上我可以使用任何东西将它放在一个按钮中.

任何帮助表示赞赏!

谢谢

pun*_*r76 6

您可以将任何IconPack Control直接放置到Button的内容或像a这样的容器中Grid.

Xaml的方式

<Button Content="Test">
    <Button.ContentTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <iconPacks:PackIconMaterial Kind="Cookie"
                                            Margin="4 4 2 4"
                                            Width="24"
                                            Height="24"
                                            VerticalAlignment="Center" />
                <TextBlock Text="{Binding}"
                            Margin="2 4 4 4"
                            VerticalAlignment="Center" />
            </StackPanel>
        </DataTemplate>
    </Button.ContentTemplate>
</Button>
Run Code Online (Sandbox Code Playgroud)

要么

<Button>
    <StackPanel Orientation="Horizontal">
        <iconPacks:PackIconMaterial Kind="Cookie"
                                    Margin="4 4 2 4"
                                    Width="24"
                                    Height="24"
                                    VerticalAlignment="Center" />
        <TextBlock Text="Test"
                    Margin="2 4 4 4"
                    VerticalAlignment="Center" />
    </StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Xaml版本2背后的代码

var stackPanel = new StackPanel() { Orientation = Orientation.Horizontal };
var packIconMaterial = new PackIconMaterial()
{
    Kind = PackIconMaterialKind.Cookie,
    Margin = new Thickness(4, 4, 2, 4),
    Width = 24,
    Height = 24,
    VerticalAlignment = VerticalAlignment.Center
};
stackPanel.Children.Add(packIconMaterial);
var textBlock = new TextBlock()
{
    Text = "Test",
    Margin = new Thickness(2, 4, 4, 4),
    VerticalAlignment = VerticalAlignment.Center
};
stackPanel.Children.Add(textBlock);
this.TestButton.Content = stackPanel;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.