2011-09-23 19 views
5

मैं इस प्रकार एक इसी दृश्य के साथ एक सरल डेटा प्रकार मानचित्रण के लिए एक DataTemplate बनाने के लिए कोशिश कर रहा हूँ:मेट्रो एक्सएएमएल में निहित डेटा टेम्पलेट्स को कैसे परिभाषित किया जाए?

<DataTemplate DataType="{x:Type src:Person}"> 
    <TextBox Text="{Binding Name}"/> 
</DataTemplate> 

मैं यह दर्शाता है कि डेटा प्रकार गुण मान्यता प्राप्त या पहुंच योग्य नहीं है एक संकलक त्रुटि मिलती है। क्या मुझसे कोई चूक हो रही है? क्या ऐसा करने के लिए कोई नया वाक्यविन्यास है या सुविधा गायब है? क्या निहित टेम्पलेट्स के लिए वैकल्पिक समाधान हैं? कुंजी विशेषता (जो काम करता है):

<UserControl x:Class="Metro_App.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:src="clr-namespace:Metro_App" 
    mc:Ignorable="d" 
    d:DesignHeight="768" d:DesignWidth="1366"> 

    <UserControl.Resources>   
     <DataTemplate x:Key="PersonTemplate"> 
      <TextBlock Text="{Binding Name}" Foreground="White" FontSize="72"/> 
     </DataTemplate> 
    </UserControl.Resources> 

    <Grid x:Name="LayoutRoot" Background="#FF0C0C0C"> 
     <ContentControl Content="{Binding MyPerson}" ContentTemplate="{StaticResource PersonTemplate}"/> 
    </Grid> 

</UserControl> 

उत्तर

9

WinRT के साथ, आपके सीएलआर नेमस्पेस को एक्सएएमएल में मैप करने के लिए वाक्यविन्यास अलग हैं। सिल्वरलाइट से WinRT में जाने पर

xmlns:src="clr-namespace:Metro_App" 

xmlns:src="using:Metro_App" 

को अधिक जानकारी के लिए series of blog posts by Morten Nielsen देखते हैं, या लेख मैं creating a cross platform Silverlight/WinRT application बारे में लिखा था: आप आप से मानचित्रण बदलना चाहिए।

हालांकि ... यदि आप API documentation for DataTemplate you will find that there is not DataType property देखते हैं। विनरेट के भीतर अंतर्निहित स्टाइल है, लेकिन अंतर्निहित डेटा टेम्पलेटिंग नहीं है।

+0

हालांकि 'डेटा टेम्पलेटकी' है, जो दिलचस्प है। –

+0

हां, यह है। शायद एक संकेत है कि निहित टेम्पलेट्स उनके रास्ते पर हैं? – ColinE

-3

आप नाम स्थान को परिभाषित है

संदर्भ के लिए, DataTemplate के साथ पूर्ण कोड एक एक्स का उपयोग कर योग्य है? xmlns: src = "clr-नाम स्थान: WpfApplicationNamespace"

<Window x:Class="WpfApplicationNamespace.MainWindow" 
    xmlns:src="clr-namespace:WpfApplicationNamespace" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 

<Window.Resources> 
    <DataTemplate DataType="{x:Type src:Persone}"/> 
</Window.Resources> 
<Grid> 
    <StackPanel Orientation="Vertical"> 
     <Button Content="fffff" Click="Button_Click" /> 
    </StackPanel> 
</Grid> 
</Window> 
+0

हाँ मेरे पास है। मैंने अपनी मूल पोस्ट को पूर्ण मेनपेज.एक्सएमएल चिपकाया है। – robzhu

+1

@ रैडिक विनआरटी नामस्थान मैपिंग के लिए एक अलग वाक्यविन्यास का उपयोग करता है। – ColinE

+0

अब यह दुखद है कि हमें उन दोनों को जानना चाहिए – Radik

2

सिल्वरलाइट DataTemplate.DataType नहीं है, और मुझे लगता है कि विंडोज XAML रूपरेखा है कि सीमा विरासत में मिला। आपको इसके बजाय DataTemplateSelector का उपयोग करना पड़ सकता है।

दिलचस्प बात यह है कि इसमें DataTemplateKey कक्षा है, लेकिन XAML से इसे तुरंत चालू करना काम नहीं करता है।