XAML windows 8 metro app,绑定问题

时间:2012-06-28 13:22:39

标签: xaml windows-8 winrt-xaml

我在windows 8 metro应用程序中使用了分组GridView,我在VariableSizedWrapGrid中有一个ItemsPanelTemplate,并希望绑定MaximumRowsOrColumns属性,但它不是正确绑定。

这是我的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>

1 个答案:

答案 0 :(得分: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>