View Full Version : سوال: به اشتراک گذاشتن ResourceDictionary بین سایر پروِژه های یک Solution
PetekDincos
یک شنبه 03 بهمن 1389, 19:14 عصر
با سلام
من یک Solution دارم و داخل این Solution چندین پروژه دارم که داخل یکی از این پروژه ها که پروژه اصلی است چند تا فایل ResourceDictionary دارم که تم های برنامه رو قرار دادم و می خوام از این ResourceDictionary ها در پروژه های دیگر Solution استفاده نماییم آیا امکان انجام این کار هست با تشکر
BILLY_Mgs
دوشنبه 04 بهمن 1389, 02:56 صبح
توی فایل app.xaml :
<!--Application Resources Here-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Templates.xaml"/>
<ResourceDictionary Source="Resources/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
مهدی فرزاد
دوشنبه 04 بهمن 1389, 08:56 صبح
سلام
مراحل زیر رو شما باید انجام بدید
ابتدا با کلیک راست کردن روی Refrences هر کدوم از پروژه ها ، پروژه ای رو که ResourceDictionary در اون قرار داره رو به رفرنس اضافه میکنید
حالا یک بار برنامه رو Rebuild کنید
سپس در App.xaml پروژه ای که میخواید از این رسورس دیکشنری استفاده کنه اینگونه بنویسید
مثلا
<Application.Resources>
<!-- Resources scoped at the Application level should be defined here. -->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/WpfApplication1;component/ResourceDictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
اگر از نرم افزار Blend استفاده میکنید کافیه بعد از Rebuild کردن بجای مرحله بالا در تب Resources روی App کلیک راست کنید و از گزینه link to Resource Dictionary رسیورس دیکشنری مورد نظر رو انتخاب کنید
فایل ضمیمه را ملاحضه بفرمایید
pedram.11
چهارشنبه 04 بهمن 1391, 11:00 صبح
سلام ببخشید اگه همچین کاریو بخوایم برای UserControl یا برای فرمی که توی dll هست انجام بدیم چیکار کنیم؟ من این دستور رو توی کد فرم به این صورت نوشتم:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes;component/Theme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
اما موقعی که میخوام با یه کنترل مثل button فرم رو نمایش بدم ارور میده:
'Set property 'System.Windows.ResourceDictionary.Source' threw an exception.' Line number '8' and line position '18'.
aryasoft2872
شنبه 07 بهمن 1391, 00:36 صبح
سلام ببخشید اگه همچین کاریو بخوایم برای UserControl یا برای فرمی که توی dll هست انجام بدیم چیکار کنیم؟ من این دستور رو توی کد فرم به این صورت نوشتم:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes;component/Theme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
اما موقعی که میخوام با یه کنترل مثل button فرم رو نمایش بدم ارور میده:
'Set property 'System.Windows.ResourceDictionary.Source' threw an exception.' Line number '8' and line position '18'.
یک باگی وجود داره توی ویژوال استدیو 2012 که اگر ورژن و پروفایل دات نت فریمورک دقیقا برابر نباشه به جای اینکه هشدار بده Exception میده که گزارش دادم و مشکل حل شده قرار شده توی آپدیت بعدی ویژوال استدیو درست بشه...ولی فعلا می تونید پروفایل و ورژن دات نتتون رو چک کنید که توی هر دو پروژه برابر باشه احتمالا مشکل از همونه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.