1

ここのようにCustomDataTemplateSelectorを実装しました: Windows Phone 7 DataTemplateSelector および CustomDataTemplateSelectorの実装。しかし、私のソリューションでは、すべての DataTemplate で変更される部分は 1 つだけで、DataTemplate の他の部分は共通です。

<local:MyTemplateSelector Content="{Binding}">
    <local:MyTemplateSelector.OneTemplate>
        <DataTemplate>
            <Grid Orientation="Horizontal" >
                <Grid x:Name="Grid1">
                    <Image Height="60" Width="60" Source="{Binding Photo}"/>
                </Grid>
                <Grid>
                    <TextBlock Text="{Binding TextValue1}">
                    <TextBlock Text="{Binding TextValue2}">
                </Grid>
            </Grid>
        </DataTemplate>
    </local:MyTemplateSelector.OneTemplate>
    <local:MyTemplateSelector.AnotherTemplate>
        <DataTemplate>
            <Grid Orientation="Horizontal" >
                <Grid x:Name="Grid2">
                    <Image Height="30" Width="60" Source="{Binding Photos[0]}"/>
                    <Image Height="30" Width="60" Source="{Binding Photos[1]}"/>
                </Grid>
                <Grid>
                    <TextBlock Text="{Binding TextValue1}">
                    <TextBlock Text="{Binding TextValue2}">
                </Grid>
            </Grid>
        </DataTemplate>
    </local:MyTemplateSelector.AnotherTemplate>
</local:MyTemplateSelector>

ここでGrid1Grid2は別のパーツです。これらの DataTemplate を「分割」することは可能ですか?

4

1 に答える 1

1

共通部分を Resource として宣言し、それを ContentPresenter にバインドするようなものを試してください。

<DataTemplate x:Key="CommonPart">
   <Grid >
      <TextBlock Text="{Binding TextValue1}">
      <TextBlock Text="{Binding TextValue2}">
   </Grid>
</DataTemplate>

<local:MyTemplateSelector Content="{Binding}">
<local:MyTemplateSelector.OneTemplate>
<DataTemplate>
   <Grid Orientation="Horizontal" >
      <Grid x:Name="Grid1">
         <Image Height="60" Width="60" Source="{Binding Photo}"/>
      </Grid>
      <ContentPresenter ContentTemplate="{StaticResource CommonPart}" />                
   </Grid>
</DataTemplate>
</local:MyTemplateSelector.OneTemplate>
<local:MyTemplateSelector.AnotherTemplate>
<DataTemplate>
   <Grid Orientation="Horizontal" >
      <Grid x:Name="Grid2">
         <Image Height="30" Width="60" Source="{Binding Photos[0]}"/>
         <Image Height="30" Width="60" Source="{Binding Photos[1]}"/>
      </Grid>
      <ContentPresenter ContentTemplate="{StaticResource CommonPart}" /> 
   </Grid>
</DataTemplate>
</local:MyTemplateSelector.AnotherTemplate>
</local:MyTemplateSelector>
于 2012-09-20T08:20:35.677 に答える