Ho un controllo Button come risorsa nel dizionario di risorse, come di seguito:Controlli WPF come risorsa statica nel dizionario delle risorse, utilizzato in più finestre 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-->
controllo
Io uso questo pulsante sopra legata al contenuto di proprietà di ContentControl controlla in 2 diverse di Windows file XAML in cui ogni Window
ha il proprio DataContext
e pertanto ciascuna finestra deve visualizzare Content
del controllo pulsante in alto in base al suo valore di proprietà ViewModel's
BoundText
come di seguito per ciascuna finestra.
<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>
Ma, il problema è che mostra lo stesso valore sia della finestra per la proprietà BoundText il che significa che sia il WPF di Windows hanno stesso istanza di controllo Button dalla risorsa, utilizzato sia in Windows.
Come posso risolvere questo problema in modo tale che ogni finestra ottiene un separato controllo tasto dalla risorsa e ancora visualizzare diversi valori per la proprietà BoundText
dal loro proprio ViewModel?
Edit: Per il motivo di cui al MSDN
come sotto, non posso usare x: Shared = "false" attributo per risolvere questo:
• Il ResourceDictionary che contiene gli elementi non deve essere nidificato all'interno di un altro ResourceDictionary. Ad esempio, non è possibile utilizzare x: condiviso per elementi in un ResourceDictionary all'interno di uno stile che è già un elemento ResourceDictionary.
Grazie.Ma, non posso usare quell'attributo come ragione menzionata nel mio ** Modifica: ** parte della domanda. – VS1
E tu usi l'esempio sopra, useresti il seguente tag. –
Loman
Eccellente, x: condiviso ha appena risolto il problema anche con lo scopo di condividere un controllo tra diverse viste. – usefulBee