我有表示文档的标签,类似于Word。我的TabControl
绑定了ObservableCollection<TabViewModel>
。 TabViewModel
有一个属性CanSave
,表示文档是否可以保存。当它可以保存时,我想加粗它并在其前面加上“*”。我怎样才能做到这一点?我想我需要先CanSave
一个DependencyProperty
。并添加一个触发器。但是前缀“*”呢?
答案 0 :(得分:1)
您无需制作DependencyProperty
;你只需要实现INotifyPropertyChanged
。
您可以使用触发器将属性绑定到单独Visibility
的{{1}}和标题的权重。
答案 1 :(得分:0)
一个简单的(可能是丑陋的,但绝对应该有效):
void CanSave(....)
{
bool canSave = GetValueBlahBlah();
if (tb.IsVisible != canSave)
tb.Visibility = canSave ? Visibility.Visible : Visibility.Collapsed;
}
tb
表示您想要根据CanSave状态显示和隐藏的TextBlock。
你可能也想创建一个DependencyProperty,如你所说并设置TextBlock
s(你将不得不为星号使用单独的TextBlock - 或者使用可在WPF 4+中绑定的Run
)Visibility
/ FontWeight
根据DataTrigger
s。
答案 2 :(得分:0)
您还可以通过绑定设置标签的标题....
<TabControl >
<TabItem >
<TabItem.Header>
<TextBlock Text="{Binding TabTitle1}" />
<TabItem.Header>
</TabControl>
然后在数据模型上设置标题
Tab1Title="* " + "some nice tab title";
您也可以使用绑定将字体设置为粗体....
FontWeight="{Binding Tab1FontWeight}"