2014-09-02 4 views
2

У меня есть код:
связывают DataTemplate TextBlock тег

<DataTemplate x:Key="SelectedTime"> 
     <Border BorderBrush="DimGray" BorderThickness="4" Margin="-3,-2,-2,-4" Height="35"> 
      <Grid Width="61" Height="31" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="LightGray" > 
       <Grid.RowDefinitions> 
        <RowDefinition Height="14"/> 
        <RowDefinition Height="15"/> 
       </Grid.RowDefinitions> 
       <Grid Background="LightBlue" Grid.Row="0" Margin="0,0,0,0"> 
        <TextBlock TextBlock.FontSize="12" HorizontalAlignment="Left" VerticalAlignment="Stretch" TextAlignment="Center" Margin="6,-2,0,0" 
           Text="{TemplateBinding Tag}"/> 
       </Grid> 
       <TextBlock Grid.Row="1" Text="{TemplateBinding Content}" HorizontalAlignment="Left" VerticalAlignment="Stretch" TextAlignment="Center" TextBlock.FontSize="10" Height="12" Margin="16,-2,0,0"/> 
      </Grid> 
     </Border> 
    </DataTemplate> 

    <Style x:Key="LowerRadioButton" 
       TargetType="RadioButton" 
       BasedOn="{StaticResource {x:Type ToggleButton}}"> 
     <Setter Property="BorderBrush" Value="Transparent"/> 
     <Setter Property="BorderThickness" Value="0"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Style.Triggers> 
      <Trigger Property="IsChecked" Value="True"> 
       <Setter Property="ContentTemplate" Value="{StaticResource SelectedTime}" /> 
      </Trigger> 
      <Trigger Property="IsChecked" Value="False"> 
       <Setter Property="ContentTemplate" Value="{StaticResource OrdinaryTime}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Resources> 


<Grid Height="35" x:Name="testGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="20"/> 
     <RowDefinition Height="15"/> 
    </Grid.RowDefinitions> 

    <RadioButton Style="{StaticResource LowerRadioButton}" Content="12.10" Tag="1" Grid.Column="0" Grid.RowSpan="2" /> 
    <RadioButton Style="{StaticResource LowerRadioButton}" Content="13.10" Tag="2" Grid.Column="1" Grid.RowSpan="2" /> 
    <RadioButton Style="{StaticResource LowerRadioButton}" Content="14.10" Tag="3" Grid.Column="2" Grid.RowSpan="2" IsChecked="True" /> 

</Grid > 

мне нужно, чтобы связать помечать в моей DataTemplate. Пробовал через construnction "{Binding Path = Tag, RelativeSource = {RelativeSource TemplatedParent}}", но он не связывается, показывает пустой текст. Что я делаю не так?

ответ

1

Вы должны знать, что TemplateBinding может использоваться только в ControlTemplate, а не DataTemplate. Поэтому вы можете попробовать что-то вроде этого в качестве обходного пути:

<TextBlock TextBlock.FontSize="12" HorizontalAlignment="Left" 
      VerticalAlignment="Stretch" TextAlignment="Center" Margin="6,-2,0,0" 
      Text="{Binding Tag, 
        RelativeSource={RelativeSource AncestorType=RadioButton}}"/> 
+1

Спасибо! Он отлично работает! – truel

Смежные вопросы