2011-09-23 7 views
5

私は次のように対応するビューでシンプルなデータ型をマッピングするためのDataTemplateを作成しようとしています:Metro XAMLで暗黙のデータテンプレートを定義する方法は?

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

私はDataTypeプロパティが認識され、またはアクセスされていないことを示すコンパイルエラーを取得します。私はここに何かを逃していますかこれを行うための新しい構文がありますか、機能がありませんか?暗黙のテンプレートの代替ソリューションはありますか? Key属性(作品):

<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では、CLR名前空間をXAMLにマッピングする構文が異なります。 、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を見ると... WinRTには暗黙的なスタイリングがありますが、暗黙的なデータテンプレートはありません。

+0

しかし、興味深い 'DataTemplateKey'があります。 –

+0

はい、そうです。おそらく暗黙的なテンプレートが途中にあることを示唆しているでしょうか? – ColinE

-3

は、名前空間を定義持っ参考

は、ここでのDataTemplateとの完全なコードは、Xを使用して資格がありますか? の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

はい、あります。オリジナルの投稿を編集し、完全なMainPage.xamlを貼り付けました。 – robzhu

+1

@Radik WinRTでは、ネームスペースマッピングに異なる構文を使用しています。 – ColinE

+0

それは悲しい今我々は両方のことを知っておくべきです – Radik

2

シルバーDataTemplate.DataTypeを持っていない、と私はWindowsのXAMLフレームワークは、その制限を継承したと思われます。代わりにDataTemplateSelectorを使用する必要があります。

面白いことに、それはDataTemplateKeyクラスですが、XAMLからインスタンス化することはできません。

関連する問題