Silverlight 访问DataTemplate属性

Silverlight 访问DataTemplate属性,silverlight,binding,telerik,datatemplate,ancestor,Silverlight,Binding,Telerik,Datatemplate,Ancestor,我有一个TabControl,其中包含TabItem的自定义ItemTemplate 我想隐藏最后一个选项卡项,如果我可以绑定到选项卡项的可见性属性,这是可能的 有什么建议吗?我想出了一个用行为来做这件事的方法。我更喜欢一种更干净的解决方案,比如绑定,但它是有效的 <telerik:RadTabControl x:Name="myRadTabControl"> <telerik:RadTabControl.ItemTemplate>

我有一个TabControl,其中包含TabItem的自定义ItemTemplate

我想隐藏最后一个选项卡项,如果我可以绑定到选项卡项的可见性属性,这是可能的


有什么建议吗?

我想出了一个用行为来做这件事的方法。我更喜欢一种更干净的解决方案,比如绑定,但它是有效的

     <telerik:RadTabControl x:Name="myRadTabControl">
       <telerik:RadTabControl.ItemTemplate>
            <!-- Tab Item Header -->
            <DataTemplate>
                <TextBlock>
                    <i:Interaction.Behaviors>
                        <Behaviors:MakeLastTabItemInvisible ParentRadTabControl="{Binding ElementName=myRadTabControl}" />
                    </i:Interaction.Behaviors>
                 </TextBlock>
            </DataTemplate>
        </telerik:RadTabControl>
      </telerik:RadTabControl x:Name="myRadTabControl">

public class MakeLastTabItemInvisible : Behavior<FrameworkElement>
{
    #region ParentRadTabControl Dependency Property

    /// <summary>
    /// ParentRadTabControl
    /// </summary>
    public RadTabControl ParentRadTabControl
    {
        get { return (RadTabControl)GetValue(ParentRadTabControlProperty); }
        set { SetValue(ParentRadTabControlProperty, value); }
    }

    /// <summary>
    /// ParentRadTabControl Dependency Property.
    /// </summary>
    public static readonly DependencyProperty ParentRadTabControlProperty =
        DependencyProperty.Register(
            "ParentRadTabControl",
            typeof(RadTabControl),
            typeof(MakeLastTabItemInvisible),
            new PropertyMetadata(new PropertyChangedCallback(ParentRadTabControlChanged)));

    private static void ParentRadTabControlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        MakeLastTabItemInvisible c = d as MakeLastTabItemInvisible;
        if (c != null)
        {
            if (e.NewValue == null) return;

            var parentTabControl = (RadTabControl)e.NewValue;
            if (parentTabControl.Items.Count <= 0) return;

            var lastTabItem = parentTabControl.ItemContainerGenerator.ContainerFromIndex(parentTabControl.Items.Count - 1) as RadTabItem;

            if (lastTabItem != null) lastTabItem.Visibility = Visibility.Collapsed;
        }
    }

    #endregion
}