ItemTemplate TextBlock的问题

时间:2009-10-09 20:17:29

标签: wpf textblock itemtemplate

我正在尝试制作一个项目模板,其中我的堆栈面板中的某些字段可以为空。如果它是空的,我想将visiblility设置为崩溃。我尝试过设置触发器,但它似乎不起作用,我对WPF的这一部分不是很熟悉

另外,当我的绑定中的特定值为true时,我想更改此项目背景的颜色。它是一回事吗?

感谢。

2 个答案:

答案 0 :(得分:1)

使用ViewModel是解决此类问题的一种方法。

如果您的数据存储在Item类中,您将使ItemViewModel包装Item以在item控件中显示。 ViewModel类将实现更改的INotifyProperty以更新显示,并且setter将引发传递相应属性名称的PropertyChanged事件。您还可以根据需要为多个相互关联的更改字段引发属性更改事件。

假设当Description为空时,您希望Item.Description显示在折叠字段中。您的ViewModel属性可能如下所示

public string Description
{
    get { return mItem.Description; }
    set { mItem.Description = value; Notify("Description"); Notify("DescriptionVisibility"); }
}

public Visibility DescriptionVisibility
{
    get { return string.IsNullOrEmpty(mItem.Description) ? Visibility.Visible : Visibility.Collapsed; }
}

在XAML中,将text属性绑定到Description,将Visibility属性绑定到DescriptionVisibility。

答案 1 :(得分:0)

如果要隐藏某个项目的内容为空,则必须重新定义其ControlTemplate的{​​{1}}(或ListBoxItem或其他内容,具体取决于您选择的项目容器重新使用)并使用针对ListViewItem的触发器,例如:

DataContext

但是,我建议您使用<DataTrigger Binding="{Binding}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> 上的Filter代表直接从视图中排除空白项目,以避免折叠未使用的项目。

例如,要排除null对象,请在后面的代码中使用:

CollectionView