Я хотел бы знать, можно ли использовать несколько ресурсов для таргетинга одного и того же элемента или элемента управления в WPF? Я заметил, что каскад файла XAML и следующий файл XAML в списке ресурсов обгонят следующий, если та же самая цель нацелена.WPF: используйте несколько ресурсов для таргетинга одного элемента или элемента управления
можно обойти это? Я пытаюсь сделать так, чтобы один файл XAML был моим макетом и позиционированием, а один был строго использован для цветов.
В моей App.xaml области Мои ресурсы следующим образом:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Views/LayoutAndPositioning/LayoutAndPositioning.xaml"/>
<ResourceDictionary Source="/Views/Theme/DefaultColors.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
LayoutAndPositioning.xaml для элемента
<Style x:Key="MyElement" TargetType="{Rectangle}">
<Setter Property="Margin" Value="200,200,200,200" />
</Style>
DefaultColors.xaml для элемента
<Style x:Key="MyElement" TargetType="{Rectangle}">
<Setter Property="Fill" Value="Green" />
<Setter Property="Width" Value="400" />
<Setter Property="Height" Value="200" />
</Style>
Но когда я пытаюсь настроить та же часть в двух разных файлах. LayoutAndPositioning.xaml, который является первым в списке, не применяется к элементу, поскольку DefaultColors.xaml не имеет в нем стилей позиции. DefaultColors.xaml не имеет поля, поэтому мой элемент просто не имеет свойства margin.
Я тестировал извлечение DefaultColors.xaml из списка ресурсов App.xaml и возвращает позиционирование. Так что это похоже на каскадную вещь.
Есть ли у кого-нибудь идеи, если можно нацелить один и тот же элемент в 2 разных файлах Xaml.
Вы пытались переименовать MyElement в MyNewElement в DefaultColors, чтобы избежать имен colisions, а затем сделать MyNewElement быть 'BasedOn = "{StaticResource MyElement}"' и объединить LayoutAndPositioning.xaml в Словарь по умолчаниюColors.xaml –