我正在使用带有TabControl的WPF。我定义了一个ItemTemplate,它为标题设置一个TextBlock,并为关闭选项卡设置一个按钮。我希望第一个标签不显示关闭按钮。我试图在ViewModel中使用“绑定到公共布尔”来设置按钮的可见性,并使用BooleanToVisibilityConverter进行转换,但是看起来好像在创建TabControl而不是在添加每个Tab时正在渲染ItemTemplate。
这是我的TabControl xaml(我尝试过是否使用FallbackValue)
<TabControl x:Name="Items" Grid.Row="1" Grid.Column="0">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding DisplayName}" />
<Button x:Name="CloseTab" Content="X" Visibility="{Binding IsTabCloseButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Hidden}"
cal:Message.Attach="DeactivateItem($dataContext, 'true')" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
在App.xaml中,我有转换器
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:Bootstrapper x:Key="Bootstrapper"/>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</ResourceDictionary>
</Application.Resources>
而且在ViewModel中,我有一个公共属性
private bool _isTabCloseButtonVisible;
public bool IsTabCloseButtonVisible
{
get { return _isTabCloseButtonVisible; }
set
{
_isTabCloseButtonVisible = value;
NotifyOfPropertyChange(() => IsTabCloseButtonVisible);
}
}
我已经测试过通过将文本块绑定到IsTabCloseButtonVisible来设置属性,并且它从false更改为true。
是否有可能实现我想做的事情?
我设法解决了这个问题。我在错误的ViewModel中拥有该属性,因此没有被绑定。