2012-02-21 5 views
1

I持って私のXAMLで、次の星座:プレビューXなしのDataTemplate:ListBoxコントロールにバインドされたキー使用してExpression BlendのSampleDataを

次のDataTemplateは、データ型を介して適用される
<ListBox x:Uid="attributesListBox" 
    DataContext="{Binding Source={StaticResource EditFeatureWithForeignKeyAttributesViewModel}}" ItemsSource="{Binding Path=Attributes}" 
    d:DataContext="{d:DesignData /SampleData/BlendableAttributesSampleData.xaml}"> 
</ListBox> 

<DataTemplate x:Uid="dataColumnFeatureAttributeDataTemplate" DataType="{x:Type DataColumnFeatureAttribute}"> 
    <!-- ... opens a button and a grid ... --> 
      <TextBlock Text="{Binding EditCaption}" /> 
    <!-- ... closes button and grid ... --> 
</DataTemplate> 

「備考」セクションのhereで説明したように、x:Keyは暗黙的に生成され、「DataTemplateはその型のデータオブジェクトに自動的に適用されます。

DataTemplate内では、リスト項目のいくつかの簡単なプロパティがバインドされています。私のSampleDataをからの抜粋では、上記の参照EditCaptionプロパティを見つける - それは単純な文字列だし、リストボックスのDataContextのとのItemsSourceが収まる必要があります。

<SampleData:BlendableAttributes xmlns:SampleData="clr-namespace:Commons.Mobile.SampleData"> 
    <SampleData:BlendableAttributes.Attributes> 
     <Mobile_Client:FeatureAttribute DisplayCaption="Vestibulum adipiscing curabitur" DisplayString="Class maecenas parturient" ErrorMessage="Nunc amet aliquam nam sed" EditCaption="Cras phasellus duis" IsEditable="True" IsSearchable="False" IsViewable="True" Modified="False"> 
      <Mobile_Client:FeatureAttribute.Feature> 
       <!-- ... Feature with a lot of properties ... --> 
      </Mobile_Client:FeatureAttribute.Feature> 
     </Mobile_Client:FeatureAttribute> 
     <!-- ... more FeatureAttributes ... --> 
    </SampleData:BlendableAttributes.Attributes> 
</SampleData:BlendableAttributes> 

I場合のDataTemplateは、プレビューに正しく適用されていますそれをx:Keyで参照してください。リストにはさまざまな種類のオブジェクトが含まれているため、この場合は不可能なので、暗黙的なx:Keyを使用して、オブジェクト型に従って特定のDataTemplateを適用する必要があります。

は、だから私のVMからのデータと、実行時には問題ありませんが、私は、ページ全体で

  • を見たとき、設計時に

    • Expression Blendが、しかし、のDataTemplateを適用せずにSampleDataをを示しています一方、私がリソースにアクセスしてDataTemplateを編集すると、SampleDataのないレイアウトが表示されます。

    私はいくつかのことを試してみて、フォーラムで解決策を探しましたが、誰もこの特別な星座を持っていないようです。誰かが私を助けることができますか?

  • 答えて

    0

    ファイル "/SampleData/BlendableAttributesSampleData.xaml"にビルドアクションDesignDataを設定しましたか?はいの場合、Visual Studioデザイナーは、サンプルデータ用のタイプDataColumnFeatureAttributeのオブジェクトを作成するのではなく、タイプ_.di0.DataColumnFeatureAttribute(または同様のもの)のプロキシオブジェクトを作成します。したがってDataTemplateDataTypeプロパティがプロキシタイプ以外のタイプを参照するため、DataTemplateは使用されません。

    この問題を解決するには、ビルドアクションをDesignDataWithDesignTimeCreatableTypesに変更することがあります(これには、DataColumnFeatureAttributeクラスにデフォルトコンストラクタが必要です)。また

    、あなたはDataTemplateFalseにプロパティd:IsDesignTimeCreatableを設定し、その後、DesignDataWithDesignTimeCreatableTypesを使用できない場合は、次のように:

    <DataTemplate x:Uid="dataColumnFeatureAttributeDataTemplate" 
           DataType="{x:Type DataColumnFeatureAttribute}" 
           d:IsDesignTimeCreatable="False"> 
        <!-- ... opens a button and a grid ... --> 
          <TextBlock Text="{Binding EditCaption}" /> 
        <!-- ... closes button and grid ... --> 
    </DataTemplate> 
    
    +0

    こんにちはと返事が遅れて申し訳ありません - 私は今まで、あなたの答えを認識していませんでした。 残念ながら、私のシステム構成は変更されているため、ライセンスの問題のためにプロジェクトをもう構築できません。小さなデモアプリケーションで同じコンステレーションを構築したとき、私は全く問題はありませんでした:DataTemplateは、DesignDataに設定されたSampleDataのビルドタイプでもDataTypeによって自動的に適用されました。 大規模なプロジェクトでは単に愚かな副作用がありました。とにかく、あなたの助けをありがとう! – pnolle

    関連する問題