当从NavigationView.PaneHeader从MainWindow.xaml中删除图像时,为什么它不显示在view.xaml上?

xxhby3vn  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(89)

我不明白为什么这些是连接的。我删除了窗格标题图像,当我删除此图像时,它也会从页面中删除(即使<Image source.../>仍然存在于HomePageView.xaml中。我不明白它们是如何以及为什么连接的?
显示窗格标题图像代码存在时的图像

相同的代码被剪切,但是程序只删除了3行,这应该只删除窗格标题图像?

样式在App.xaml中定义,如下所示:

<Application
    x:Class="Ankara_Online.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Ankara_Online">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.ThemeDictionaries>
                <ResourceDictionary x:Key="Light">
                    <Style x:Key="Logo" TargetType="Image">
                        <Setter Property="Source" Value="Assets/TRvACC/trvacc_logo_transparent.png"/>
                    </Style>
                    <Style x:Key="defaultTextStyle" TargetType="TextBlock">
                        <Setter Property="Foreground" Value="#000000" />
                        <Setter Property="FontFamily" Value="Poppins" />
                        <Setter Property="FontWeight" Value="Normal" />
                    </Style>
                </ResourceDictionary>
                <ResourceDictionary x:Key="Dark">
                    <Style x:Key="Logo" TargetType="Image">
                        <Setter Property="Source" Value="Assets/TRvACC/trvacc_logo_transparent_2.png"/>
                    </Style>
                    <Style x:Key="defaultTextStyle" TargetType="TextBlock">
                        <Setter Property="Foreground" Value="#FFFFFF" />
                        <Setter Property="FontFamily" Value="Poppins" />
                        <Setter Property="FontWeight" Value="Normal" />
                    </Style>
                </ResourceDictionary>
            </ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary.MergedDictionaries>
                <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
            </ResourceDictionary.MergedDictionaries>
            <!-- Other app resources here -->
            <!--directories etc. shared resoruces-->
        </ResourceDictionary>
    </Application.Resources>
</Application>

更新

我试图理解为什么会发生这种情况,发现它与Style无关。事实上,即使我手动给予Image的源代码,它仍然没有显示。

hc8w905p

hc8w905p1#

起初,这个问题似乎与NavigationView.PaneHeader图像是否存在有关。但是,经过进一步调查,我发现这不是问题所在。这个问题是由于寻址图像并将其作为ImageSource传递时的相对路径与绝对路径造成的。在检查Live属性资源管理器时,我发现ImageUriSource值是错误的。

<Style x:Key="HeaderLogo" TargetType="Image">
    <Setter Property="Source" Value="Assets/Images/logo.png" />
</Style>

./Views文件夹中呈现页面或框架时,UriSource值被转换为不正确的ms-appx:///Views/Assets\Images\logo.png。正确的格式应该是路径开头没有/Views。为了解决此问题,我将Value更改为本机Uri

<Style x:Key="TRvACC_LOGO" TargetType="Image">
     <Setter Property="Source" Value="ms-appx:///Assets/Images/logo.png" />
</Style>

结果成功!图像显示正确。

相关问题