我正在尝试删除标题标题为空的组的组标题。但我无法使 HeaderContainerStyle 中的绑定起作用。我也不能在 TemplateHeader 中的 TextBlock 上设置可见性,因为这会留下一个小空间并且不会完全不可见。
这是我的 XAML:
<Page.Resources>
<CollectionViewSource
x:Name="MenuItemsGrouped"
IsSourceGrouped="True"
Source="{Binding MenuItems}" />
</Page.Resources>
<ListView Grid.Row="1" Margin="0"
ItemsSource="{Binding Source={StaticResource MenuItemsGrouped}}"
IsSynchronizedWithCurrentItem="False"
SelectionMode="Single"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.HeaderContainerStyle>
<Style TargetType="ListViewHeaderItem">
<Setter Property="Visibility" Value="{Binding GroupHeaderVisibility}"></Setter>
</Style>
</GroupStyle.HeaderContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0" Orientation="Horizontal">
<TextBlock Text="{Binding Title}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
有没有人有解决方案 - 也许是绑定不起作用的原因?
编辑:
好的,这实际上是 Windows 应用商店应用程序和早期 Silverlight 应用程序的限制:
Windows Presentation Foundation (WPF) 和 Microsoft Silverlight 支持使用绑定表达式为样式中的 Setter 提供值的能力。Windows 运行时不支持 Setter.Value 的 Binding 用法(Binding 不会计算并且 Setter 无效,您不会收到错误,但也不会获得所需的结果)。当您从 WPF 或 Silverlight XAML 转换 XAML 样式时,请将任何 Binding 表达式用法替换为设置值的字符串或对象,或者将这些值重构为共享的 StaticResource 值而不是 Binding 获得的值。
来自http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.setter
另请参阅Silverlight: How to use a binding in setter for a style (或等效的解决方法)