ヘッダー タイトルが空のグループのグループ ヘッダーを削除しようとしています。しかし、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 は、Binding 式を使用して Style の Setter に Value を提供する機能をサポートしていました。Windows ランタイムは、Setter.Value の Binding の使用をサポートしていません (Binding は評価されず、Setter は効果がありません。エラーは発生しませんが、目的の結果も得られません)。XAML スタイルを WPF または Silverlight XAML から変換する場合は、Binding 式の使用箇所を値を設定する文字列またはオブジェクトに置き換えるか、Binding で取得した値ではなく共有 StaticResource 値として値をリファクタリングします。
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.setterから
また、Silverlight: How to use a binding in setter for a style (または同等の回避策)も参照してください。