强制使用设置 x:Shared="False" 不可能
Mandatory Use of Setting x:Shared="False" Not Possible
这个问题可能与 Error when using x:Shared="False" resources in external assembly in WPF 之类的问题非常相似,但我一直无法找到一个我可以与之相关的解决方案,或者更确切地说,我无法找到如何解决这个问题的想法。
为什么我在标题中提到强制使用是因为除了使用将 X:shared 设置为 false 之外,我无法找到解决问题的替代方法。
我的问题是,在具有图标的特定视图中,相似类型图标的元素似乎是共享的,因此即使有两种或更多类型,图标也只会用一个项目呈现
这个问题在这些堆栈溢出问题中也是合理的
我非常感谢任何 help/suggestions 来克服这个问题
复杂的是你那里有无数的颜色。现在的趋势是使用只有背景和前景的更简单的图标。您可以 "just" 使用一条路径和几何图形。
看到这是多种形状和多种颜色,您可以使用 DrawingImage。
我在用户控件中做了这个例子,它大致像你的图标之一。
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
mc:Ignorable="PresentationOptions"
>
<UserControl.Resources>
<DrawingImage x:Key='icon' PresentationOptions:Freeze="True">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="M17,17A5,5,0,0,1,12,22A5,5,0,0,1,7,17C7,15.36,7.79,13.91,9,13L9,5A3,3,0,0,1,12,2A3,3,0,0,1,15,5L15,13C16.21,13.91,17,15.36,17,17 M11,8L11,14.17C9.83,14.58,9,15.69,9,17A3,3,0,0,0,12,20A3,3,0,0,0,15,17C15,15.69,14.17,14.58,13,14.17L13,8 11,8z"
Brush="Wheat"
>
<GeometryDrawing.Pen>
<Pen Thickness="1" Brush="Green"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<GeometryDrawing Geometry="M17,18L12,15.82 7,18 7,5 17,5 M17,3L7,3A2,2,0,0,0,5,5L5,21 12,18 19,21 19,5C19,3.89,18.1,3,17,3z"
Brush="Lavender"
>
<GeometryDrawing.Pen>
<Pen Thickness="1" Brush="Red"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</UserControl.Resources>
<Grid>
<StackPanel>
<Image Width="12" Height="12" Source="{StaticResource icon}"/>
<Image Width="12" Height="12" Source="{StaticResource icon}"/>
</StackPanel>
</Grid>
</UserControl>
我可能会考虑使用 DataTemplates 创建图标,如果出于任何原因 x:Shared 是个问题。 DataTemplate 在应用时实例化内容的副本,因此共享不是问题。
资源:
<DataTemplate x:Key="FileSystemIcon">
<Canvas Width="12" Height="12">
<Path
Stroke="Black"
Fill="White"
Data="M20,4L4,4A2,2,0,0,0,2,6L2,18A2,2,0,0,0,4,20L20,20A2,2,0,0,0,22,18L22,6A2,2,0,0,0,20,4 M20,18L4,18 4,8 12,13 20,8 20,18 M20,6L12,11 4,6 4,6 20,6 20,6z"
/>
</Canvas>
</DataTemplate>
用法:
<UserControl ContentTemplate="{StaticResource FileSystemIcon}" />
这个问题可能与 Error when using x:Shared="False" resources in external assembly in WPF 之类的问题非常相似,但我一直无法找到一个我可以与之相关的解决方案,或者更确切地说,我无法找到如何解决这个问题的想法。
为什么我在标题中提到强制使用是因为除了使用将 X:shared 设置为 false 之外,我无法找到解决问题的替代方法。
我的问题是,在具有图标的特定视图中,相似类型图标的元素似乎是共享的,因此即使有两种或更多类型,图标也只会用一个项目呈现
这个问题在这些堆栈溢出问题中也是合理的
我非常感谢任何 help/suggestions 来克服这个问题
复杂的是你那里有无数的颜色。现在的趋势是使用只有背景和前景的更简单的图标。您可以 "just" 使用一条路径和几何图形。
看到这是多种形状和多种颜色,您可以使用 DrawingImage。
我在用户控件中做了这个例子,它大致像你的图标之一。
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
mc:Ignorable="PresentationOptions"
>
<UserControl.Resources>
<DrawingImage x:Key='icon' PresentationOptions:Freeze="True">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="M17,17A5,5,0,0,1,12,22A5,5,0,0,1,7,17C7,15.36,7.79,13.91,9,13L9,5A3,3,0,0,1,12,2A3,3,0,0,1,15,5L15,13C16.21,13.91,17,15.36,17,17 M11,8L11,14.17C9.83,14.58,9,15.69,9,17A3,3,0,0,0,12,20A3,3,0,0,0,15,17C15,15.69,14.17,14.58,13,14.17L13,8 11,8z"
Brush="Wheat"
>
<GeometryDrawing.Pen>
<Pen Thickness="1" Brush="Green"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<GeometryDrawing Geometry="M17,18L12,15.82 7,18 7,5 17,5 M17,3L7,3A2,2,0,0,0,5,5L5,21 12,18 19,21 19,5C19,3.89,18.1,3,17,3z"
Brush="Lavender"
>
<GeometryDrawing.Pen>
<Pen Thickness="1" Brush="Red"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</UserControl.Resources>
<Grid>
<StackPanel>
<Image Width="12" Height="12" Source="{StaticResource icon}"/>
<Image Width="12" Height="12" Source="{StaticResource icon}"/>
</StackPanel>
</Grid>
</UserControl>
我可能会考虑使用 DataTemplates 创建图标,如果出于任何原因 x:Shared 是个问题。 DataTemplate 在应用时实例化内容的副本,因此共享不是问题。
资源:
<DataTemplate x:Key="FileSystemIcon">
<Canvas Width="12" Height="12">
<Path
Stroke="Black"
Fill="White"
Data="M20,4L4,4A2,2,0,0,0,2,6L2,18A2,2,0,0,0,4,20L20,20A2,2,0,0,0,22,18L22,6A2,2,0,0,0,20,4 M20,18L4,18 4,8 12,13 20,8 20,18 M20,6L12,11 4,6 4,6 20,6 20,6z"
/>
</Canvas>
</DataTemplate>
用法:
<UserControl ContentTemplate="{StaticResource FileSystemIcon}" />