5

次のように、対応するビューで単純なデータ型をマッピングするためのDataTemplateを作成しようとしています。

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

DataTypeプロパティが認識されていないかアクセスできないことを示すコンパイラエラーが発生します。ここで何かが足りませんか?これを行うための新しい構文はありますか、それとも機能がありませんか?暗黙のテンプレートの代替ソリューションはありますか?

参考までに、ax:Key属性を使用して修飾された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>
4

3 に答える 3

9

WinRT では、CLR 名前空間を XAML にマッピングするための構文が異なります。マッピングを次から変更する必要があります。

xmlns:src="clr-namespace:Metro_App"

xmlns:src="using:Metro_App"

Silverlight から WinRT への移行の詳細については、Morten Nielsen による一連のブログ投稿、またはクロス プラットフォームの Silverlight/WinRT アプリケーションの作成について書いた記事を参照してください。

ただし... DataTemplate の API ドキュメントを見ると、DataType プロパティがないことがわかります。WinRT 内には、暗黙的なスタイル設定がありますが、暗黙的なデータ テンプレートはありません。

于 2011-09-23T08:00:16.140 に答える
2

Silverlight には がなくDataTemplate.DataType、Windows XAML フレームワークがその制限を継承していると思われます。代わりにDataTemplateSelectorを使用する必要がある場合があります。

興味深いことに、これにはDataTemplateKeyクラスがありますが、XAML からインスタンス化することはできません。

于 2011-09-23T05:34:14.230 に答える
-3

名前空間を定義しましたか? xmlns:src="clr-namespace: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>
于 2011-09-23T04:41:22.897 に答える