Mam kontroli przycisk jako zasób w Słowniku Zasobów jak poniżej:Kontrola WPF jako StaticResource w słowniku zasobów, używana w wielu systemach 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-->
I teraz to wykorzystać powyżej przycisku sterowania związany właściwości content ContentControl kontroluje w 2 różnych oknach plików .xaml gdzie każdy Window
ma swój własny DataContext
i dlatego każde okno powinno wyświetlać Content
powyższego kontrolka przycisku w oparciu o jego wartość właściwości ViewModel's
BoundText
jak poniżej dla każdego okna.
<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>
Ale problemem jest to, że wyświetlacz samą wartość zarówno Window dla właściwości BoundText co oznacza, że zarówno WPF Okna mają samo wystąpienie sterowania przycisk z zasobu, używane zarówno w systemie Windows.
Jak mogę rozwiązać ten problem tak, że każde okno dostaje osobną kontrolę przycisk z zasobu i nadal wyświetlać różne wartości dla właściwości BoundText
z ich własnym ViewModel?
Edit: Z powodów wskazanych poniżej w MSDN
, nie mogę używać x: Shared = "false" atrybut, aby rozwiązać ten:
• The ResourceDictionary, który zawiera elementy nie muszą być zagnieżdżonym w innym pliku ResourceDictionary. Na przykład nie można użyć wartości x: Współdzielona dla elementów w ResourceDictionary, która jest w stylu, w którym jest już elementem ResourceDictionary.
Dzięki.Ale nie mogę użyć tego atrybutu jako przyczyny wymienionej w mojej ** edycji: ** części pytania. – VS1
Używasz powyższego przykładu, aby użyć następującego znacznika. –
Loman
Doskonały, x: Współdzielony właśnie rozwiązał mój problem, a także w celu udostępnienia jednej kontrolki w różnych widokach. – usefulBee