xaml
कस्टम XAML फ़ाइलों के साथ काम करना
खोज…
XAML से एक ऑब्जेक्ट पढ़ना
निम्नलिखित कक्षाओं की संरचना पर विचार करें XAML में एक CLR ऑब्जेक्ट में पढ़ा जाना चाहिए:
namespace CustomXaml
{
public class Test
{
public string Value { get; set; }
public List<TestChild> Children { get; set; } = new List<TestChild>();
}
public class TestChild
{
public string StringValue { get; set; }
public int IntValue { get; set; }
}
}
कक्षाओं में या तो कोई स्पष्ट निर्माता नहीं होना चाहिए या एक खाली प्रदान करना चाहिए। XAML को साफ रखने के लिए, संग्रह को आरंभ करने की आवश्यकता है। XAML में प्रारंभिक संग्रह भी संभव है।
XAML पढ़ने के लिए XamlServices वर्ग का उपयोग किया जा सकता है। इसे System.Xaml में परिभाषित किया गया है जिसे संदर्भों में जोड़ने की आवश्यकता है। निम्न पंक्ति तब डिस्क से test.xaml फ़ाइल पढ़ती है:
Test test = XamlServices.Load("test.xaml") as Test;
XamlServices.Load पद्धति में धाराओं और अन्य स्रोतों से लोड करने के लिए कई अधिभार हैं। यदि एक एम्बेडेड फ़ाइल से XAML पढ़ना (जैसे कि यह WPF में किया जाता है) Build Action गुण जो डिफ़ॉल्ट रूप से Page सेट होता है, उसे यानी Embedded Resource बदलना होगा। अन्यथा कंपाइलर WPF असेंबलियों के संदर्भों के लिए पूछेगा।
पढ़ने के लिए XAML फ़ाइल की सामग्री कुछ इस तरह दिखनी चाहिए:
<Test xmlns="clr-namespace:CustomXaml;assembly=CustomXaml"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Value="test">
<Test.Children>
<TestChild StringValue="abc" IntValue="123"/>
<TestChild StringValue="{x:Null}" IntValue="456"/>
</Test.Children>
</Test>
शुद्ध xmlns परिभाषा उपसर्ग के बिना समान नामस्थान में कक्षाओं के उपयोग की अनुमति देती है। xmlns:x की परिभाषा xmlns:x {x:Null} जैसे निर्माणों का उपयोग करने के लिए प्रासंगिक है। बेशक अन्य नामस्थानों या विधानसभाओं के लिए उपसर्गों को आवश्यकतानुसार परिभाषित किया जा सकता है।
XAML के लिए एक ऑब्जेक्ट लिखना
निम्नलिखित कक्षाओं की संरचना पर विचार करें XAML में एक CLR ऑब्जेक्ट में पढ़ा जाना चाहिए:
namespace CustomXaml
{
public class Test
{
public string Value { get; set; }
public List<TestChild> Children { get; set; } = new List<TestChild>();
}
public class TestChild
{
public string StringValue { get; set; }
public int IntValue { get; set; }
}
}
XAML लिखने के लिए XamlServices वर्ग का उपयोग किया जा सकता है। इसे System.Xaml में परिभाषित किया गया है जिसे संदर्भों में जोड़ने की आवश्यकता है। निम्न पंक्ति तो उदाहरण लिखते test प्रकार का है जो Test फाइल करने के लिए test.xaml डिस्क पर:
XamlServices.Save("test.xaml", test);
XamlServices.Save पद्धति में धाराओं और अन्य लक्ष्यों को लिखने के लिए कई अधिभार हैं। परिणामी XAML को कुछ इस तरह देखना चाहिए:
<Test Value="test" xmlns="clr-namespace:CustomXaml;assembly=CustomXaml"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Test.Children>
<scg:List x:TypeArguments="TestChild" Capacity="4">
<TestChild IntValue="123" StringValue="abc" />
<TestChild IntValue="456" StringValue="{x:Null}" />
</scg:List>
</Test.Children>
</Test>
शुद्ध xmlns परिभाषा उपसर्ग के बिना समान नामस्थान में कक्षाओं के उपयोग की अनुमति देती है। xmlns:x की परिभाषा xmlns:x {x:Null} जैसे निर्माणों का उपयोग करने के लिए प्रासंगिक है। लेखक स्वचालित रूप से xmlns:scg जोड़ता है xmlns:scg Test ऑब्जेक्ट के Children संपत्ति के लिए एक List<TestChild> को प्रारंभ करने के लिए List<TestChild> । यह निर्माणकर्ता द्वारा शुरू की जा रही संपत्ति पर निर्भर नहीं करता है।