Основы WPF: Общие глобальные стили для MVVM

в django < 1.9

from django.utils.timezone import datetime #important if using timezones
today = datetime.today()
foo_for_today = Foo.objects.filter(datefield__year=today.year, datefield__month=today.month, datefield__day=today.day)

в django> 1.9, поскольку они добавили ключевое слово даты

foo_for_today = Foo.objects.filter(datefield__date=datetime.date.today())

7
задан wonea 6 February 2017 в 14:35
поделиться

1 ответ

WPF предоставляет DynamicResources именно по этой причине. StaticResources - которые больше всего напоминают «традиционные» ссылки в программировании - как раз связаны с проблемой, с которой вы столкнулись; их необходимо определить и загрузить до того, как будет проанализирован стиль. С другой стороны, DynamicResources не нужно определять до того, как они будут использованы - вы даже можете создавать их на лету. WPF заботится о том, чтобы DynamicResources автоматически загружались всеми стилями, которые ссылаются на них, после их фактической загрузки.

Использование DynamicResources несложно. Когда вы создаете свой стиль MonkeyText, создайте его, как обычно:

<Style TargetType="TextBlock" x:Key="MonkeyText">
    <Setter Property="TextAlignment" Value="Center"/>
    <!-- etc. -->
</Style>

А затем обратитесь к нему из другого места, используя DynamicResource:

<TextBlock Text="Hello, World!" Style="{DynamicResource MonkeyText}"/>

Если по какой-либо причине WPF не может разрешить ваш DynamicResource, он завершится неудачно без уведомления без каких-либо исключений (StaticResources генерирует исключения, когда не может быть решен). Однако, когда это произойдет, он напечатает отладочное сообщение, поэтому следите за окном вывода в Visual Studio.

Поскольку DynamicResources работают с ресурсами, которые загружаются в любой момент в любом порядке, вы можете структурировать словари ресурсов в любом так, как вам нравится - поэтому вставьте их в другие стили представления и объедините их с помощью единого App.Resources ResourceDictionary в app.xaml.

Более подробную информацию о DynamicResources можно найти в документации MSDN для WPF.

он завершится ошибкой без предупреждения без создания какого-либо исключения (StaticResources генерирует исключения, когда проблема не может быть разрешена). Однако, когда это произойдет, он напечатает отладочное сообщение, поэтому следите за окном вывода в Visual Studio.

Поскольку DynamicResources работают с ресурсами, которые загружаются в любой момент в любом порядке, вы можете структурировать словари ресурсов в любом так, как вам нравится - поэтому вставьте их в другие стили представления и объедините их с помощью единого App.Resources ResourceDictionary в app.xaml.

Более подробную информацию о DynamicResources можно найти в документации MSDN для WPF.

он завершится ошибкой без предупреждения без создания какого-либо исключения (StaticResources генерирует исключения, когда проблема не может быть разрешена). Однако, когда это произойдет, он напечатает отладочное сообщение, поэтому следите за окном вывода в Visual Studio.

Поскольку DynamicResources работают с ресурсами, которые загружаются в любой момент в любом порядке, вы можете структурировать словари ресурсов в любом так, как вам нравится - поэтому вставьте их в другие стили представления и объедините их с помощью единого App.Resources ResourceDictionary в app.xaml.

Более подробную информацию о DynamicResources можно найти в документации MSDN для WPF.

11
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: