我有一个针对 Net Core 8 的 wpf 项目,其命名约定如下:
myapp.test.shell
myapp.test.core
我想使用核心项目来存储我的图像,以供解决方案中其他项目的参考。
图像在运行时不可见:
<Image Source="pack://application:,,,/myapp.test.Core;component/resources/scanner.png" Height="24" Width="24" HorizontalAlignment="Left" Margin="0,0,5,0" />
图像在设计时显示,但在运行时丢失。
经过一番尝试,我发现如果我将图像放入名称中没有句点的项目中(即 myappresources),图像将按预期显示。
运行时可见图像:
<Image Source="pack://application:,,,/myappresources;component/resources/scanner.png" Height="24" Width="24" HorizontalAlignment="Left" Margin="0,0,5,0" />
我讨厌改变我的命名约定,所以我想知道是否有办法让它与项目名称中的句点一起工作?
名称中没有句点的项目:
Xaml:
<Button x:Name="btnStartScan" Grid.Row="1" Grid.Column="1" Background="Transparent" Command="{Binding NavigationView}" CommandParameter="Scan">
<StackPanel Orientation="Horizontal" Width="100">
<Image Source="pack://application:,,,/ResourcesTest;component/resources/scanner.png" Height="24" Width="24" HorizontalAlignment="Left" Margin="0,0,5,0" />
<TextBlock Foreground="White" HorizontalAlignment="Right" VerticalAlignment="Center">Start Scan</TextBlock>
</StackPanel>
</Button>
文件属性:
结果:
有周期的项目:
Xaml:
<Button x:Name="btnStartScan" Grid.Row="1" Grid.Column="1" Background="Transparent" Command="{Binding NavigationView}" CommandParameter="Scan">
<StackPanel Orientation="Horizontal" Width="100">
<Image Source="pack://application:,,,/EShareScan.Libraries.Core;component/resources/scanner.png" Height="24" Width="24" HorizontalAlignment="Left" Margin="0,0,5,0" />
<TextBlock Foreground="White" HorizontalAlignment="Right" VerticalAlignment="Center">Start Scan</TextBlock>
</StackPanel>
</Button>
文件属性:
结果:
问题出在项目文件上,而不是项目名称上。
没有句点:
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
和他们在一起:
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
更改带有句点的项目的属性组以匹配不带句点的项目添加了wpf框架,然后图像开始显示。