ฉันคิดว่าสิ่งที่คุณถามคือคุณต้องการไฟล์ code-behind สำหรับ ResourceDictionary คุณสามารถทำสิ่งนี้โดยสิ้นเชิง! ในความเป็นจริงคุณทำแบบเดียวกับ Window:
สมมติว่าคุณมี ResourceDictionary ที่ชื่อว่า MyResourceDictionary ในไฟล์ MyResourceDictionary.xaml ของคุณให้ใส่แอตทริบิวต์ x: Class ในองค์ประกอบรูทดังนี้:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyCompany.MyProject.MyResourceDictionary"
x:ClassModifier="public">
จากนั้นสร้างโค้ดที่อยู่หลังไฟล์ชื่อ MyResourceDictionary.xaml.cs พร้อมกับประกาศต่อไปนี้
namespace MyCompany.MyProject
{
partial class MyResourceDictionary : ResourceDictionary
{
public MyResourceDictionary()
{
InitializeComponent();
}
... // event handlers ahead..
}
}
และคุณทำเสร็จแล้ว คุณสามารถใส่อะไรก็ได้ที่คุณต้องการในโค้ดด้านหลัง: เมธอดคุณสมบัติและตัวจัดการเหตุการณ์
== อัปเดตสำหรับแอป Windows 10 ==
และในกรณีที่คุณกำลังเล่นกับUWPมีอีกสิ่งหนึ่งที่ต้องระวัง:
<Application x:Class="SampleProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rd="using:MyCompany.MyProject">
<!-- no need in x:ClassModifier="public" in the header above -->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- This will NOT work -->
<!-- <ResourceDictionary Source="/MyResourceDictionary.xaml" />-->
<!-- Create instance of your custom dictionary instead of the above source reference -->
<rd:MyResourceDictionary />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>