Как получить доступ к ресурсам окна в WinUI 3

Я только начал работать над проектом WinUi 3 (Desktop) и заблокировал попытки добавить ресурсы Window в окно.

Я бы подумал, что следующее сработает. Однако, похоже, нет свойства Resources.

<Window.Resources>
    
</Window.Resources>

3 ответа

По-видимому, это был выбор дизайна, если процитировать Мигеля , члена Microsoft, из выпуска Github :

[...] объект Window не имеет свойства Resource, например, WPF. Это было дизайнерское решение [...]

Альтернативой является использование словаря в контексте компонента, например:

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

Вы можете объявить ресурс в корневом элементе управления вашего окна.

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

Вы правы - ресурсов Window нет. Вы можете иметь глобально общие ресурсы, создавая ресурсы приложения, или вы можете <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>
Другие вопросы по тегам