2011-12-21 12 views
1

這是我控制我的定製DataTemplateSelector:可重複使用的DataTemplate。如何指定?需要語法援助

<m:Map x:Name="MainMap"> 
      <m:MapItemsControl 
       ItemsSource="{Binding Source={StaticResource WorkLayerData}}"> 
       <m:MapItemsControl.ItemTemplate> 
        <DataTemplate> 
         <Mobile:DevicePushpinTemplateSelector 
          m:MapLayer.Position="{Binding Location}" 
          ZoomLevel="{Binding ZoomLevel, ElementName=MainMap}" 
          Content="{Binding}"> 
          <Mobile:DevicePushpinTemplateSelector.DotTemplate> 
           <DataTemplate> 
            <Ellipse Width="8" Height="8" Stroke="Black" Fill="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" StrokeThickness="1" /> 
           </DataTemplate> 
          </Mobile:DevicePushpinTemplateSelector.DotTemplate> 
          <Mobile:DevicePushpinTemplateSelector.NumberedTemplate> 
           <DataTemplate> 
            <Border x:Name="border" Background="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" BorderBrush="Black" BorderThickness="2" Padding="2" Height="20" CornerRadius="8"> 
             <TextBlock VerticalAlignment="Center" Text="{Binding DisplayId}" /> 
            </Border>         
           </DataTemplate> 
          </Mobile:DevicePushpinTemplateSelector.NumberedTemplate> 
          <Mobile:DevicePushpinTemplateSelector.DetailedTemplate> 
           <DataTemplate> 

            <Border Background="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" BorderBrush="Black" BorderThickness="1" Padding="2" CornerRadius="2"> 
             <Grid> 
              <Grid.RowDefinitions> 
               <RowDefinition Height="Auto" /> 
               <RowDefinition Height="Auto" /> 
               <RowDefinition Height="Auto" /> 
               <RowDefinition Height="Auto" /> 
               <RowDefinition Height="Auto" /> 
              </Grid.RowDefinitions> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="Auto" /> 
               <ColumnDefinition Width="Auto" /> 
              </Grid.ColumnDefinitions> 
              <TextBlock Text="Id:" FontWeight="Bold" /> 
              <TextBlock Text="{Binding DisplayId}" Grid.Column="1" /> 
              <TextBlock Text="Device Id:" FontWeight="Bold" Grid.Row="1" /> 
              <TextBlock Text="{Binding DeviceId}" Grid.Row="1" Grid.Column="1" /> 
              <TextBlock Text="Speed:" FontWeight="Bold" Grid.Row="2" /> 
              <TextBlock Text="{Binding Speed}" Grid.Row="2" Grid.Column="1" /> 
              <TextBlock Text="Location:" FontWeight="Bold" Grid.Row="3" /> 
              <TextBlock Text="{Binding Location}" Grid.Row="3" Grid.Column="1" /> 
              <Button Content="View Details" Grid.Row="4" Grid.ColumnSpan="2" /> 
             </Grid>           
            </Border> 
           </DataTemplate> 
          </Mobile:DevicePushpinTemplateSelector.DetailedTemplate> 
         </Mobile:DevicePushpinTemplateSelector> 
        </DataTemplate> 
       </m:MapItemsControl.ItemTemplate> 
      </m:MapItemsControl> 
     </m:Map> 

我想我Mobile:DevicePushpinTemplateSelector.DetailedTemplate遷入的資源,所以我可以在其他地方重複使用它。

我宣佈資源:

<UserControl.Resources> 
     <DataTemplate x:Key="DetailedMapItemTemplate"> 
      <Border Background="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" BorderBrush="Black" BorderThickness="1" Padding="2" CornerRadius="2"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Text="Id:" FontWeight="Bold" /> 
        <TextBlock Text="{Binding DisplayId}" Grid.Column="1" /> 
        <TextBlock Text="Device Id:" FontWeight="Bold" Grid.Row="1" /> 
        <TextBlock Text="{Binding DeviceId}" Grid.Row="1" Grid.Column="1" /> 
        <TextBlock Text="Speed:" FontWeight="Bold" Grid.Row="2" /> 
        <TextBlock Text="{Binding Speed}" Grid.Row="2" Grid.Column="1" /> 
        <TextBlock Text="Location:" FontWeight="Bold" Grid.Row="3" /> 
        <TextBlock Text="{Binding Location}" Grid.Row="3" Grid.Column="1" /> 
        <Button Content="View Details" Grid.Row="4" Grid.ColumnSpan="2" /> 
       </Grid> 
      </Border> 
     </DataTemplate> 
    </UserControl.Resources> 

我的問題是,我不知道如何使用這個DataTemplate中我的選擇裏。什麼是我需要使用的XAML?像列表框這樣的控件很容易,只需設置ItemTemplate="{StaticResource thisTemplate}"但我如何做到這一點在我的情況?還在學習XAML

回答

1

只需設置在標籤本身DetailedTemplate屬性:

<Mobile:DevicePushpinTemplateSelector 
      m:MapLayer.Position="{Binding Location}" 
      ZoomLevel="{Binding ZoomLevel, ElementName=MainMap}" 
      Content="{Binding}" 
      DetailedTemplate="{StaticResource DetailedMapItemTemplate}"> 
      ... 
+0

衛生署!我知道這很容易.. – katit 2011-12-21 22:21:06