Переопределите стандартную тему в App.xaml

Сохраните тесты короткими, "атомарными". Протестируйте самое маленькое предположение в каждом тесте. Сделайте каждый TestMethod независимым для интеграционных тестов, я даже создаю новую базу данных для каждого метода. Если необходимо создать некоторые данные для каждого тестового использования метод "Init". Используйте насмешки для изоляции класса тестирование от, он - зависимости.

я всегда думаю, "каково минимальное количество кода, который я должен записать, чтобы доказать, что это работает на все случаи?"

8
задан Community 23 May 2017 в 12:11
поделиться

2 ответа

Я думаю, вы можете добавить стиль в ResourceDictionary и объединить его с темой Aero следующим образом:

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0,
        Culture=neutral, PublicKeyToken=31bf3856ad364e35,
        ProcessorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml">
      </ResourceDictionary>

      <!-- Adding the style to a resource dictionary -->
      <ResourceDictionary>
        <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
          <Setter Property="Foreground" Value="Red" />
        </Style>
      </ResourceDictionary>

    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

Это должно дать ВСЕ ваши текстовые поля выделяют красный цвет переднего плана без необходимости явно указывать это в каждом окне и пользовательском элементе управления.

2
ответ дан 6 December 2019 в 00:57
поделиться

У меня была та же проблема, и я попробовал подход Оскара. Хотя, это вызвало какое-то странное поведение. В частности, стили не применялись к некоторым элементам управления, в то время как к другим элементам управления того же типа. И я не смог найти никаких существенных различий между этими элементами управления.

Я продолжил поиск решения и нашел его здесь: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/91718816-8674-4ad8-a3c8-ae283bebe224/

Оно все еще не идеально и не понятно, но работает, по крайней мере, для меня.

Вкратце, идею можно получить из следующего кода:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0,
        Culture=neutral, PublicKeyToken=31bf3856ad364e35,
        ProcessorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml" />
                </ResourceDictionary.MergedDictionaries>
                <Style x:Key="ExtendedTextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
                    <Setter Property="Foreground" Value="Red" />
                </Style>
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource ExtendedTextBoxStyle}" />
    </ResourceDictionary>
</Application.Resources>

Для удобства обслуживания и читаемости эти вложенные объекты ResourceDictionary могут переходить в отдельные XAML-файлы.

1
ответ дан 6 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

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