如何大胆和当Tab可以保存时,将“*”添加到TextBlock

时间:2010-10-17 01:11:41

标签: c# wpf mvvm

我有表示文档的标签,类似于Word。我的TabControl绑定了ObservableCollection<TabViewModel>TabViewModel有一个属性CanSave,表示文档是否可以保存。当它可以保存时,我想加粗它并在其前面加上“*”。我怎样才能做到这一点?我想我需要先CanSave一个DependencyProperty。并添加一个触发器。但是前缀“*”呢?

3 个答案:

答案 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+中绑定的RunVisibility / FontWeight根据DataTrigger s。

答案 2 :(得分:0)

您还可以通过绑定设置标签的标题....

<TabControl >
   <TabItem >
          <TabItem.Header>
                 <TextBlock Text="{Binding TabTitle1}" />
          <TabItem.Header>
</TabControl>

然后在数据模型上设置标题

Tab1Title="* " + "some nice tab title";

您也可以使用绑定将字体设置为粗体....

FontWeight="{Binding Tab1FontWeight}"