У меня есть элемент управления Button в качестве ресурса в Resource Dictionary как показано ниже:WPF-элементы управления как StaticResource в словаре ресурсов, используемые в нескольких Windows WPF?
<!--ButtonResources.xaml file-->
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button x:Key="buttonResource" Content={Binding BoundText}/>
</ResourceDictionary>
<!--ButtonResources.xaml file-->
управления
я теперь использовать эту кнопку выше связанного содержимого собственности ContentControl управления в 2 различных ОС Windows .xaml файлы, где каждый Window
имеет свой собственный DataContext
, и поэтому каждое окно должно отображать Content
приведенного выше элемента управления кнопки на основании его значения ViewModel's
BoundText
, как показано ниже для каждого окна.
<Window x:Class="TestClass1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ButtonResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentControl Content={StaticResource buttonResource}/>
</Grid>
</Window>
Но, проблема в том, что дисплей же значение как окна для свойства BoundText, что означает, что как WPF Windows, имеет же экземпляра кнопки управления из ресурса, используется как в Windows.
Как я могу решить эту проблему таким образом, что каждое окно получает раздельное управление кнопки из ресурса и по-прежнему отображать различных значения для BoundText
собственности от их собственного ViewModel?
Edit: По той причине, указанной в MSDN
, как показано ниже, я не могу использовать х: Shared = "False" атрибут для решения этой проблемы:
• The ResourceDictionary, который содержит элементы, не должны быть вложенным в другой ResourceDictionary. Например, вы не можете использовать x: общий для элементов в ResourceDictionary, который находится внутри стиля, который уже является элементом ResourceDictionary.
Спасибо.Но я не могу использовать этот атрибут в качестве причины, упомянутой в моей части ** Edit: **. – VS1
И вы используете приведенный выше пример, вы бы использовали следующий тег. –
Loman
Отлично, x: Shared просто решил мою проблему, а также для совместного использования одного элемента управления среди разных представлений. – usefulBee