1

我只需要一双额外的眼睛来看看我在这里做错了什么。

我在列表视图中有一个带有 groupstyle 的 xaml 页面。这是它的外观,

                <GroupStyle
                            HeaderContainerStyle="{StaticResource JumpListListHeaderContainerStyle}"
                            HidesIfEmpty="True">
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <Border 
                                    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
                                    BorderThickness="0,0,0,1"
                                    BorderBrush="{StaticResource RedBrush}"
                                    Margin="0,0,0,9.5">
                                    <TextBlock Text="{Binding Key}"
                                        Foreground="{StaticResource RedBrush}"
                                        FontSize="23" 
                                        Visibility="{Binding IsGroupheaderVisible, Converter={StaticResource BooleanToVisibilityConverter}}" 
                                        FontFamily="Segoe WP Semibold"
                                        OpticalMarginAlignment="TrimSideBearings"
                                        VerticalAlignment="Bottom" />
                            </Border>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                </GroupStyle>

我需要做的是根据视图模型中的条件隐藏 groupstule 标题。这里是房产。

    private bool _isGroupHeaderVisibile;
    public bool IsGroupheaderVisible
    {
        get { return _isGroupHeaderVisibile; }
        set
        {
            if (value == _isGroupHeaderVisibile) return;
            _isGroupHeaderVisibile = value;
            NotifyOfPropertyChange(() => IsGroupheaderVisible);
        }
    }

在 OnInitialize 事件中,我根据某些条件将其设置为 true 或 false。但不幸的是,它不会隐藏/显示,但总是会出现。

这是我正在使用的 BooleanToVisibilityConverter,

public class BooleanToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            bool flag;
            return value != null && bool.TryParse(value.ToString(), out flag) && flag
                ? Visibility.Visible
                : Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            return value is Visibility && (Visibility)value == Visibility.Visible;
        }
    }

注意:我使用的是 CaliburnMicro,所以我有类似 OnInitialize() 之类的方法,但我省略了。

4

0 回答 0