XAML 如何在WinUI3中访问窗口资源

gdx19jrr  于 2023-06-03  发布在  其他
关注(0)|答案(3)|浏览(168)

我刚刚开始在一个WinUi 3(桌面)项目上工作,试图将Windows资源添加到Windows时遇到了阻碍。
我本以为以下方法会奏效。但是,似乎没有Resources属性。

<Window.Resources>
    
</Window.Resources>
zphenhs4

zphenhs41#

显然,这是一个设计选择,引用微软成员Miguel的话,来自Github问题:
[...]例如,Windows对象没有像WPF那样Resource属性。这是一个设计的决定[…]
另一种方法是在组件的上下文中使用字典,例如:

<ListView>
  <ListView.Resources>
   <!-- My resources -->
  </ListView.Resources>
</ListView>
jxct1oxe

jxct1oxe2#

您可以在窗口的根控件中声明资源。

<Window ...>
    <Border ...>
        <Border.Resources>
            <Style TargetType="Button">
                <Setter Property="Margin" Value="10"/>
            </Style>
        </Border.Resources>
        <Button ... />
    </Border>
</Window>
wz1wpwve

wz1wpwve3#

你是对的-没有窗口资源。您可以通过制作App资源来拥有全局共享资源,也可以拥有<page><Control>级别的资源。
您可能需要在App.xml中定义资源字典

<Application
x:Class="BOMCheck.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="using:CommunityToolkit.WinUI.UI.Converters"
xmlns:helpers="using:BOMCheck.Helpers"
xmlns:local="using:BOMCheck"
xmlns:media="using:Microsoft.UI.Xaml.Media"
RequestedTheme="Light">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

相关问题