ورود

View Full Version : اضافه کردن ResourceDictionary از پروژه دیگر به UserControl



pedram.11
پنج شنبه 05 بهمن 1391, 10:21 صبح
سلام ببخشد من همچین سوالیو در ادامه ی پستی (http://barnamenevis.org/showthread.php?271382-%D8%A8%D9%87-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9-%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86-ResourceDictionary-%D8%A8%DB%8C%D9%86-%D8%B3%D8%A7%DB%8C%D8%B1-%D9%BE%D8%B1%D9%88%D9%90%DA%98%D9%87-%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-Solution) مشابه همین پست مطرح کردم اما تاحالا اساتید راهنمایی نکردند، سوال بنده این بود:
من یه پروژه از نوع کلاس ساختم و تمام استایل های کنترلهارو توی اون نوشتم، حالا میخوام از این استایل ها توی پروژه های دیگه برای کنترل هایی مثل UserControl یا Windowاستفاده کنم، من این کد رو برای فرم قرار دادم:
<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'.

Window و UserControl بنده هم توی dll هست؛ دوستان اگه راهنمایی کنید ممنون میشم

mze666
پنج شنبه 05 بهمن 1391, 10:59 صبح
اسمبلی ای که Resource ها توش هست رو درست ذکر کردید؟ باید به روش زیر عمل کنید:
Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"

pedram.11
پنج شنبه 05 بهمن 1391, 11:06 صبح
بله ارور موقع کد نویسی نیست موقع دیباگ فرم اصلی لود میشه اما موقعی که دکمه رو فشار میدم که فرم دوم (که دیکشنری رو توش آدرس دهی کردم) نمایش داده بشه ارور میده!
من توی یه سایت خارجی دیدم کسی همچین مشگلی داشت و خودش مشگل خودش رو حل کرد و گفت باید از نوع استاتیک تعریف میکردم! من نمیدونم کجا منظورش بود

mze666
پنج شنبه 05 بهمن 1391, 11:19 صبح
اگر یه نمونه پروژه ای چیزی بذارید شاید راحت تر بشه مشکل رو بررسی کرد.

pedram.11
پنج شنبه 05 بهمن 1391, 11:30 صبح
ممنون از وقتی که گذاشتید
بفرمائید:
دانلود (http://s2.picofile.com/file/7631479672/test.rar.html)

mze666
پنج شنبه 05 بهمن 1391, 11:42 صبح
بفرمایید. درست شد.

pedram.11
پنج شنبه 05 بهمن 1391, 12:15 عصر
خیلی کمک کردید ممنون، اما لطف میکنید بفرمائید مشکل کجا بود؟ کلا باید چیکار کرد که همچین مشکلی پیش نیاد؟

mze666
پنج شنبه 05 بهمن 1391, 13:27 عصر
خواهش می کنم.
شما اولاً ریفرنس پروژه Theme رو به پروژتون اضافه نکرده بودید. ثانیاً روش فراخوانی یک پنجره جدید اشتباه بود. چون برنامتون کلاً یک فرم بیشتر نداشت (MainWindow) و شما میخواستید دکمه در فرم جدید نمایش داده بشه. نمی دونم چرا اون مدلی کار کرده بودید. و این که اون کاری که توی پست قبلی گفته بودم رو درست انجام نداده بودید (Source)

pedram.11
پنج شنبه 05 بهمن 1391, 13:32 عصر
به نکته خیلی ظریفی اشاره کردید که پروژه تم رو به رفرنس اضاف نکرده بودم، بله حق با شماس من فقط برای تست اینطور نوشتم و فرمی رو به صورت داینامیک ساختم، خیلی ممنون یه چیز جدید یادمون دادید، مرسی