本地和應用程式的資源

如果你只需要特定控制元件的給定資源,則可以通過將其新增到此特定控制元件而不是視窗來使其更加本地化。它的工作方式完全相同,唯一的區別是你現在只能從控制元件範圍內進行訪問:

<StackPanel Margin="10">
    <StackPanel.Resources>
        <sys:String x:Key="ComboBoxTitle">Items:</sys:String>
    </StackPanel.Resources>
    <Label Content="{StaticResource ComboBoxTitle}" />
</StackPanel>

在這種情況下,我們將資源新增到 StackPanel,然後從其子控制元件 Label 中使用它。StackPanel 內部的其他控制元件也可以使用它,就像這些子控制元件的子項可以訪問它一樣。但是,此特定 StackPanel 之外的控制元件無法訪問它。

如果你需要能夠從多個視窗訪問資源,這也是可能的。App.xaml 檔案可以包含與視窗和任何型別的 WPF 控制元件類似的資源,當你將它們儲存在 App.xaml 中時,它們可以在專案的所有視窗和使用者控制元件中全域性訪問。它的工作方式與從 Window 儲存和使用時的工作方式完全相同:

<Application x:Class="WpfSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             StartupUri="WPFApplication/ExtendedResourceSample.xaml">
    <Application.Resources>
        <sys:String x:Key="ComboBoxTitle">Items:</sys:String>
    </Application.Resources>
</Application>

使用它也是一樣的 - WPF 將自動向上移動範圍,從本地控制元件到視窗,然後到 App.xaml,以查詢給定資源:

<Label Content="{StaticResource ComboBoxTitle}" />