c# - 绑定(bind)数据模板文本 block 标签

标签 c# wpf bind

我有代码:

    <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 >

我需要绑定(bind)到我的 DataTemplate 中的标记。尝试通过构造“{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}”,但未绑定(bind),显示空文本。我做错了什么?

最佳答案

你应该知道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}}"/>

关于c# - 绑定(bind)数据模板文本 block 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25626762/

相关文章:

c# - 登录 .Net 核心控制台应用程序不工作

F# 中的 C# 对象初始化语法

c# - 如何在圆角 WPF 窗体中创建圆角矩形?

安全远程服务器上的 php LDAP 绑定(bind) Windows 失败

javascript - Google Closure 绑定(bind)/解决 this 关键字的问题

c# - CefSharp.WinForms "Dock =DockStyle.Fill"没有效果,黑边。如何让ChromiumWebBrowser 填充TBForm?

C# : "A first chance exception of type ' System. InvalidOperationException'”

wpf - RenderTransform.TranslateTransform 在 wpf 中的用户控件中进行动画处理

c# - InputBinding 和 WebBrowser 控件

jquery - 使用 Google map 标记绑定(bind) jQuery 元素点击