不幸的是,有一种方法可以像访问命名对象一样简单。假设您使用绑定来填充此数据模板,一种选择是遍历父控件的子对象并根据已知值检查文本字段。稍微干净一点可能是使用 Tag 属性(可以绑定到任何对象)并以这种方式进行比较。
另一种选择(我最常用于此类事情的选择)是将属性添加到您要绑定的对象并将该属性绑定到可见性(如有必要,使用转换器)。例如,如果您当前正在绑定到 ObservableCollection< string >,请将绑定更改为 ObservableCollection< StringWithVisibility >,其中 StringWithVisibility 如下所示:
public class StringWithVisibility
{
public string Text {get; set;}
public bool IsVisible {get; set;}
}
然后你的模板看起来像:
<DataTemplate>
<StackPanel x:Name="stackPanelItems" Orientation="Horizontal">
<TextBlock Text="{Binding Text}" Visibility={Binding IsVisible, Converter={StaticResource BoolVisibilityConverter}} />
</StackPanel>
</DataTemplate>
并且您已经创建了适当的 IValueConverter 作为资源。如果您不熟悉转换器,文档在这里:http: //msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter (VS.95).aspx