【发布时间】:2015-09-29 07:44:28
【问题描述】:
我有一个标签控件,其中定义了(如 TabControl.ItemContainerStyle 中的 Style)模板 HeaderTemplate 和 ContentTemplate .选项卡控件没有项目源。项目内容有一个自定义用户控件,其属性为 Status。项目标题有一个文本块,必须在其中显示此状态。 我的问题是如何绑定这个?
<TabControl x:Name="tbMain">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:Session x:Name="session"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image VerticalAlignment="Center" Width="18" Height="18" Source="Resources/bullet_green.png"/>
<TextBlock Grid.Column="1" VerticalAlignment="Center" Margin="1" Foreground="Green" Text="{Binding ?? session.Status}"/>
<Button x:Name="btnDelete" Grid.Column="2" Margin="1" Content="asdasd" VerticalAlignment="Center" Style="{DynamicResource CloseButton}" Click="btnDelete_Click" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Name}"/>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
【问题讨论】:
-
请发布您的(相关)XAML 标记。
-
您是否尝试使用 'ElementName' 语法进行绑定?类似 '
' -
@Bruno 是的,我试过了。它对我不起作用。我认为问题在于,内容模板的元素 session 和标题模板的文本块位于不同的范围内,彼此不可见。这正是问题所在,如何从该文本块访问 session 元素。我认为,它应该类似于 -> 父控件(这是单个选项卡)-> 内容 -> 会话,但我不知道如何实现。
标签: wpf tabcontrol