UWP - 图标选择器

时间:2017-12-30 12:32:24

标签: combobox uwp icons



我目前正在学习如何制作UWP应用程序,为此,我正在创建一个允许用户创建笔记,笔记类别等的应用程序......

我有一个NavigationView,其中列出了每个类别,当用户点击特定类别时,会弹出一些(我不知道还有什么)所有注释的列表。
< / p>

我希望每个类别都有一个图标,因此当关闭NavigationView的窗格时,用户仍然可以点击一个类别。

我的问题如下:

当用户创建一个新类别时,我想通过一个组合框(或其他相同的东西)给他选择图标,其中包含所有可能的图标。

  • 是否可以将图标放入Combobox?
  • 我如何获得与用于NavigationViewItem的图标相同的图标,将它们用作我的Combobox的项目源?

编辑:

这就是我所做的:我使用SymbolIcon组件向我的Combobox添加了一个ItemTemplate:

<ComboBox x:Name="iconpicker">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <SymbolIcon Symbol="{Binding symbol}" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
</ComboBox>

我也做了一个简单的课程:

public class ComboSymbol
{
    public Symbol symbol;
}

这是填充组合框的代码:

ObservableCollection<ComboSymbol> images = new ObservableCollection<ComboSymbol>();
iconpicker.ItemsSource = images;
images.Add(new ComboSymbol { symbol = Symbol.Accept });

而且......它几乎正常工作 Picture of the combobox item

如您所见,符号不是我选择的符号。无论我选择哪个符号(代码隐藏),总会有这个表情符号。

编辑2:
我正在寻找我做错事的地方,显然这是关于我的约束力。 SymbolIcon组件有一个默认图标(我刚刚创建了一个SymbolIcon而没有告诉我想要的符号,这个表情符号再次出现,所以我想在我的情况下我的绑定不好,因为它找不到我想要的符号,该程序使用默认图标)。

最终修改:
问题出在这里:我忘了在班级成员申报之后加上“{get; set;}”。它现在正在运作!

public Symbol symbol { get; set; } // Fix

1 个答案:

答案 0 :(得分:0)

有几个UWP控件可以显示“图标”。他们的共同父类是IconElement类,它具有以下实现:

  • BitmapIcon - 将图片(通常为.png)显示为图标
  • PathIcon - 将XAML路径显示为图标
  • FontIcon - 以给定字体显示字符串
  • SymbolIcon - 根据预定义系统符号集中的值显示图标

您当然可以使用与NavigationView项目相同的ComboBox图标。

使用XAML自定义ComboBox非常简单,因为它完全可模板化,您只需创建自定义模板即可:

                                                                                       

这假定Items是一个自定义类的集合,其具有IconUri属性,其中包含用作图标的图像的路径以及带有一些文本的Text属性。然后它将显示一个两列布局,左侧是图标,旁边是文本。