ListBox中的c#materialdesign PackIcon

时间:2018-04-30 19:54:33

标签: c# xaml icons material-design

我想将数组添加到ListBox中,我希望每个ListBoxItem都有自己的文本和Icon(PackIcon)。我形成数组并将其绑定到ListBox。

C#

"calculate"

XAML

       MenuItems = new[]
    {
        new MenuItem
        {
            Id = 0,
            Caption = "Item 1",
            Icon = "Pencil",
            Poeition = 1
        },
        new MenuItem
        {
            Id = 1,
            Caption = "Item 2",
            Icon = "Ticket",
            Poeition = 2
        },

文字出现,但图标不显示。如何动态显示图标(PackIcon Materialdesign)。当我绑定图标名称舔一个字符串时,它不起作用。

我试着这样做

            <ListBox
                x:Name="lbMenuPanel"
                Foreground="White"
                ItemsSource="{Binding MenuItems}"
                PreviewMouseLeftButtonUp="lbMenuPanel_PreviewMouseLeftButtonUp"
                ScrollViewer.HorizontalScrollBarVisibility="Disabled">

                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Height="60" Orientation="Horizontal">
                            <md:PackIcon VerticalAlignment="Center" Kind="{Binding Icon}" />
                            <TextBlock Style="{StaticResource MenuTextBlock}" Text="{Binding Caption}" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>

但是没有用。

1 个答案:

答案 0 :(得分:1)

这是我测试过的一个简单修复。而不是将实际的PackIcons存储在MenuItem中,而是存储字符串版本。

MenuItem
{
    Id = 1,
    Caption = "Мои роли",
    Icon = PackIconKind.Pencil.ToString(),
    Poeition = 2
}

&#39;图标&#39;变量是我的例子中的一个字符串。

上面的xaml代码应该有效。

我试过这个并且它有效。

尝试设置PackIcon的大小也是值得的,尽管这不应该是问题。