我如何在 styles.xaml 中绑定静态资源的源,它位于 Stringresources 所在的 Resources 文件夹中?

How can I bind source of static resource in styles.xaml which is in Resources folders as Stringresources are in?

我试图将静态资源放在 styles.xaml 中,它位于 Resources 文件夹中,因为 Stringresources 位于其中。 我在其他页面中以相同的方式绑定了静态资源,并且效果很好。 现在出现异常,他们说当我 运行 this.

时找不到源
 <TextBlock 
    Text="{Binding Source={StaticResource ResourceKey=AllRooms}}" 
    TextWrapping="Wrap" FontWeight="Bold" FontSize="16" 
    FontFamily="Noto Sans CJK KR Regular" HorizontalAlignment="Right" 
    Margin="0,0,10,0" VerticalAlignment="Center" />
 <TextBlock HorizontalAlignment="Left" Margin="10,0,0,0" 
    FontSize="16" FontFamily="Noto Sans CJK KR Regular" 
    FontWeight="Bold"
    Text="{Binding Source={StaticResource ResourceKey=ByRoom}}" 
    TextWrapping="Wrap" VerticalAlignment="Center" />

您的 styles.xaml 需要包含在 App.xaml 中。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Folder_name_if_exists/Styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在此之后,您的样式将通过 StaticResource:

提供
<TextBlock Text="{StaticResource AllRooms}"
           TextWrapping="Wrap"
           FontWeight="Bold" FontSize="16" 
           FontFamily="Noto Sans CJK KR Regular"
           HorizontalAlignment="Right" 
           Margin="0,0,10,0"
           VerticalAlignment="Center" />

如果您需要使用本地化字符串引用 *.resx 文件 - 您只需在文件顶部包含包含名称空间,然后通过 {x:Static}.[= 引用它们19=]

xmlns:res="clr-namespace:MyApp.NestedNamespace.Resources"
...

<TextBlock Text="{Binding Source={x:Static res.NameOfResourcesFile.NameOfResourceString}}"
           TextWrapping="Wrap"
           FontWeight="Bold" FontSize="16" 
           FontFamily="Noto Sans CJK KR Regular"
           HorizontalAlignment="Right" 
           Margin="0,0,10,0"
           VerticalAlignment="Center" />

更新

由于您的资源是静态的,因此保持声明顺序从最独立的资源到最依赖的资源很重要。

例如: 如果您有一个包含颜色和画笔的字典以及另一个包含使用这些颜色的样式的字典 - 它们的声明顺序应如下所示:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Folder_name_if_exists/BrushesAndColors.xaml"/>
            <ResourceDictionary Source="/Folder_name_if_exists/Styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

以其他方式声明它们将导致异常。