XAML windows 8 metro app,绑定问题

Ish*_*hti 3 xaml windows-8 winrt-xaml

GridView在windows 8 metro应用程序中使用分组,我有一个VariableSizedWrapGridin ItemsPanelTemplate,并且想要绑定MaximumRowsOrColumnsProperty,但它没有正确绑定.

这是我的XAML

<GridView  ItemsSource="{Binding Source={StaticResource groupeddata}}" >
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Width="120" Height="150" >
                <!--some controls here binded correctly.-->
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
    <GridView.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <Grid Margin="1,0,0,6">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding maxGridCoulmns}"></TextBlock>
                            <!--work ok here -->
                            <TextBlock   Foreground="Black" Padding="0,0,0,20" Text="{Binding headerText}"  />
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
            <GroupStyle.Panel >
                <ItemsPanelTemplate>
                    <VariableSizedWrapGrid    Orientation="Horizontal"  MaximumRowsOrColumns="{Binding maxGridCoulmns}"  Margin="0,0,80,0"/>
                    <!--not binding  here -->                         
                </ItemsPanelTemplate>
            </GroupStyle.Panel>
        </GroupStyle>
    </GridView.GroupStyle>
</GridView>
Run Code Online (Sandbox Code Playgroud)

小智 6

您必须将DependencyProperty强制转换为ICollectionViewGroup以获取实际的组对象.

在代码中var actualGroup = (group as Windows.UI.Xaml.Data.ICollectionViewGroup).Group;- 在XAML中,您所要做的就是将前缀添加Group.到绑定路径中.

所以在你的XAML中,只需像这样编辑绑定:

<ItemsPanelTemplate>
    <VariableSizedWrapGrid
        Orientation="Horizontal"
        MaximumRowsOrColumns="{Binding Group.maxGridCoulmns}"
        Margin="0,0,80,0"/>
</ItemsPanelTemplate>
Run Code Online (Sandbox Code Playgroud)