【问题标题】:Access DataTemplate Property访问 DataTemplate 属性
【发布时间】:2011-07-12 10:40:49
【问题描述】:

我有一个带有自定义 ItemTemplate 的 TabControl(用于 TabItem)。

我想隐藏最后一个标签项,如果我可以绑定到 TabItem 的 Visibility 属性,这将是可能的。

有什么建议吗?

【问题讨论】:

    标签: silverlight binding telerik datatemplate ancestor


    【解决方案1】:

    我想出了一种通过行为来做到这一点的方法。我会更喜欢更清洁的解决方案,例如绑定,但它确实有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2021-12-12
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多