wpf - WPF 选项卡控件仅对第一个选项卡使用不同的 ItemTemplate
问题描述
我正在使用带有 TabControl 的 WPF。我已经定义了一个 ItemTemplate,它为标题设置一个 TextBlock 和一个用于关闭选项卡的按钮。我希望第一个选项卡不显示关闭按钮。我尝试使用 Binding to a Public bool 在我的 ViewModel 中设置按钮的 Visiblity 并使用 BooleanToVisibilityConverter 进行转换,但看起来 ItemTemplate 是在创建 TabControl 时呈现的,而不是在添加每个 Tab 时呈现。
这是我的 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);
}
}
我已经测试了通过将 Textblock 绑定到 IsTabCloseButtonVisible 来设置属性,并且它从 false 变为 true。
是否有可能实现我想要做的事情?
解决方案
我已经设法解决了这个问题。我在错误的 ViewModel 中有该属性,因此它没有被绑定。
推荐阅读
- angular - 将 Angular 10 项目转换为 nativescript 共享项目时出现“无法解析 tsconfig.json 文件”错误
- python - 如何在 H2O 中创建自定义管道功能?
- javascript - 欺骗站点认为请求来自它的域
- java - 将纯文本转换为 Json - Java - Spring Boot
- vue.js - Vue v-text 指令:连接来自多个变量的文本
- excel - 用其他列中的数据替换列中的可见单元格
- c# - 如何使用 C# 对 CSV 文件中的列执行文本搜索?
- docker - 带有 docker-compose.yaml 的动态 crontab
- r - R:将相似的地址组合在一起
- firebase - Firebase DB 触发函数在执行结束时是否应该返回一些东西?