WPF应用程序中的SVG图标

时间:2015-07-26 11:24:08

标签: wpf xaml svg

我已将SVG图像转换为PathGeometry,并将其保存为WPF应用程序中的静态资源。我想将它显示为MenuItem上的图标,所以我这样做:

                    <MenuItem.Icon>
                        <Grid Width="18" Height="18">
                          <Viewbox Stretch="Fill">
                                <Path
                                   Fill="DimGray"
                                   Data="{StaticResource ZoomIn}"
                                 />
                          </Viewbox>
                        </Grid>
                    </MenuItem.Icon>

由于我有很多MenuItem,并且我计划有更多的SVG图标,为了避免代码重复,我考虑根据上面的代码创建一些UserControl,可以像这样使用:

<MenuItem.Icon>
 <uc:MyGeometryContainer
   Width="18"
   Height="18"
   Fill="DimGray"
   Geometry="{StaticResource ZoomIn}"/>
</MenuItem.Icon>

此控件应该能够设置其宽度,高度和颜色以自定义图标视图,这一点非常重要。 我坚持使用它,因为UserControl为特定的DataContext公开了它的DependencyProperties,这意味着我将不得不创建一些数据对象,而不是直接在XAML中分配值。我发现它很尴尬。 你会如何实施这种控制?

1 个答案:

答案 0 :(得分:1)

感谢Clemens&#39;评论,我已经利用了Path的Stretch属性。代码现在简洁,不需要单独的控件:

                        <MenuItem.Icon>
                                <Path
                                    Stretch="Fill"
                                    Width="18"
                                    Height="18"
                                    Fill="DimGray"
                                    Data="{StaticResource ZoomIn}"> 
                                </Path>
                       </MenuItem.Icon>
相关问题