Zaradni w osobnym zgromadzeniu
Mam pliki słownika zasobów (MenuTemplate.xaml, ButtonTemplate.xaml, etc), które chcę używać w wielu oddzielnych aplikacjach. Mógłbym dodać je do zestawów aplikacji, ale lepiej będzie, jeśli skompiluję te zasoby w jednym zestawie i moje aplikacje będą się do nich odwoływać, prawda?
Po zbudowaniu zestawu zasobów, jak mogę odwołać się do niego w aplikacji.xaml moich aplikacji? Obecnie używam ResourceDictionary.Scalone w celu scalenia jednostki pliki słownikowe. Jeśli mam je w zestawie, Jak mogę je odwołać w xaml?
6 answers
Sprawdź składnię pack URI . Chcesz coś takiego:
<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 14:52:27
Przykład, żeby to była 15-sekundowa odpowiedź -
Powiedz, że masz " style.xaml "w bibliotece WPF o nazwie "common" i chcesz go użyć z głównego projektu aplikacji:
- Dodaj odniesienie z głównego projektu do" wspólnego " projektu
- Twoja aplikacja.xaml powinien zawierać:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Cheers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-27 11:55:10
Pracuję z. NET 4.5 i nie mogłem tego uruchomić... Używałem WPF Custom Control Library. W końcu mi się udało...
<ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />
Źródło: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/11a42336-8d87-4656-91a3-275413d3cc19
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-17 12:17:13
Resource-Only DLL jest opcją dla Ciebie. Ale nie jest to konieczne, chyba że chcesz modyfikować zasoby bez rekompilacji aplikacji. Mieć tylko jeden wspólny ResourceDictionary plik jest również opcja. To zależy jak często zmieniasz zasoby itp.
<ResourceDictionary Source="pack://application:,,,/
<MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>
MyAssembly - tylko nazwa złożenia bez rozszerzenia
FolderStructureInAssembly - jeśli zasoby znajdują się w folderze, określ strukturę folderów
Kiedy to robisz to lepiej być świadomym siteOfOrigin też.
WPF wspiera dwa organy: application: / / / oraz siteoforigin:///. Aplikacji: / / / Organ identyfikuje pliki danych aplikacji, które są znane w czasie kompilacji, w tym pliki zasobów i treści. Na siteoforigin: / / / Organ identyfikuje pliki strony pochodzenia. Zakres każdego organu przedstawiono na poniższym rysunku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-30 01:37:00
Dla UWP:
<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-27 10:48:06
Korzystanie z XAML:
Jeśli znasz drugą strukturę assembly
i chcesz resources
W c# kod, następnie użyj poniższego kodu:
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
foreach (var item in dictionary.Values)
{
//operations
}
Wyjście: jeśli chcemy użyć ResourceDictionary
RD1.xaml
projektu WpfControlLibrary1
na projekt StackOverflowApp
.
Struktura projektów :
Kod Wyjście:
PS: wszystkie Pliki ResourceDictionary
powinny mieć Build Action
jako 'Resource
' lub ' Page
'.
Korzystanie Z C#:
Jeśli ktoś chce rozwiązania w czysto kod c# zobacz moje to rozwiązanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:10