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