я следующее ResourceDictonaryОпределение ResourceDictionary только один раз
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:SharedHelpers="clr-namespace:Shared.Helpers;assembly=Shared"
xmlns:SharedViewModels ="clr-namespace:Shared.ViewModels;assembly=Shared"
xmlns:SharedViews="clr-namespace:Shared.Views;assembly=Shared"
>
<DataTemplate DataType="{x:Type SharedViewModels:DatabaseViewModel}">
<SharedViews:DatabaseView/>
</DataTemplate>
<DataTemplate DataType="{x:Type SharedViewModels:ProxyViewModel}">
<SharedViews:ProxiesView/>
</DataTemplate>
<DataTemplate DataType="{x:Type SharedViewModels:AppUserViewModel}">
<SharedViews:AppUserView/>
</DataTemplate>
<!--ViewModels-->
<SharedViewModels:DatabaseViewModel x:Key="DatabaseViewModel"/>
<SharedViewModels:AppUserViewModel x:Key="AppUserViewModel"/>
<SharedViewModels:ProxyViewModel x:Key="ProxyViewModel"/>
</ResourceDictionary>
как вы можете видеть эти ресурсы являются статическими и я хочу, чтобы получить доступ к ним из моих других библиотек и классов так, что я сделал это в моем приложении. XAML я сделал определение словаря как следующий
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Name="dict" Source="ResourceDict.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
из моего кода позади, мне нужно получить доступ к экземплярам в этом словаре, не переопределить его, поэтому я нашел
var databaseViewModelInstance = Application.Current.Resources.MergedDictionaries["dict"]["DatabaseViewModel"] as Shared.ViewModels.DatabaseViewModel;
, но проблема в том, что позволяет мне получить доступ к словарю только по индексу, а не по его имени, как я могу получить доступ к словарю по его имени без необходимости определить новый ресурс словаря экземпляр в каждом классе, что я хотите получить к нему доступ?
следующие работы просто отлично
var databaseViewModelInstance = Application.Current.Resources.MergedDictionaries[0]["DatabaseViewModel"] as Shared.ViewModels.DatabaseViewModel;