【问题标题】:Bind a row of a grid to switch between a gridview and text绑定一行网格,在gridview和text之间切换
【发布时间】:2013-06-18 19:31:55
【问题描述】:

所以在我的应用程序的主页上,我有一个两行的网格。 第一行是标题等。 第二行是一堆数据的gridview。

我想将我的主网格的第二行绑定到一个布尔值或其他东西,以检查用户是否登录。

如果用户没有登录,第二行将只显示文字:“请登录”

如果用户已登录,则将填充带有数据的网格视图。

就像现在一样,我的代码只有一个包含数据的 collectionviewsource

<CollectionViewSource
x:Name="groupedItemsViewSource"
Source="{Binding data}"
IsSourceGrouped="true"
ItemsPath="information"
d:Source="{Binding data, Source={d:DesignInstance IsDesignTimeCreatable=True, Type=local:HomeDesignData}}"/>

然后是两行网格,第一行是gridview

<Grid Style="{StaticResource LayoutRootStyle}">
    <Grid.RowDefinitions>
        <RowDefinition Height="140"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <GridView
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Grouped Items"
        Grid.RowSpan="2"
        Padding="116,137,40,46"
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
        ItemTemplate="{StaticResource Standard500x130ItemTemplate}"
        SelectionMode="None"
        IsSwipeEnabled="false"
        IsItemClickEnabled="True"
        ItemClick="ItemView_ItemClick">

同样,我只是想找到一种方法将gridview完全切换为简单文本,绑定到布尔值或检查用户是否登录的东西

提前感谢您的任何意见

【问题讨论】:

    标签: wpf xaml data-binding windows-8 winrt-xaml


    【解决方案1】:

    实现此目的的一个非常简单的方法是在 GridView 上叠加一个网格,并且仅在用户未登录时才显示它。为此,您可以利用 BooleanToVisibilityValueConverter。

    <Grid Style="{StaticResource LayoutRootStyle}">
        <Grid.Resources>
            <converters:BooleanToVisibilityConverter x:Key="BoolToVis"/>
        </Grid.Resources>
        <Grid.RowDefinitions>
            <RowDefinition Height="140"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
    
        <GridView
            x:Name="itemGridView"
            Grid.Row="2"
            ...
        />
        <Grid Grid.Row="2" Background="Black"
              Visibility="{Binding IsLoggedIn, Converter={StaticResource BoolToVis}}"> <!-- The Grid control will fill the entire row
            <TextBlock Text="Log in dummy!" />
        </Grid>
    </Grid>
    

    【讨论】:

    • 这看起来是一个很好的解决方案——我已经有一个布尔到可见性转换器,但我不知道如何调用它。你能帮帮我吗?公共密封类 BooleanToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, string language) { return value is Visibility && (Visibility)value == Visibility.Visible; } }
    • 您需要将转换器添加到元素的资源中。查看更新的答案,其中包括网格资源中的转换器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2018-03-03
    • 2020-01-31
    • 1970-01-01
    • 2020-03-27
    相关资源
    最近更新 更多