XAML Windows 8 Metro应用,绑定问题

3

我是在Windows 8 Metro应用程序中使用分组GridView,我在ItemsPanelTemplate中使用了一个VariableSizedWrapGrid,并希望绑定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>

请正确格式化您的XAML。如果您希望别人花时间帮助您,请至少表现出您自己也付出了一些努力。 - eandersson
Visual Studio的输出窗口会在绑定失败时提供一些详细信息。它会显示什么? - HDW Production
它显示此消息:“错误:绑定表达式路径错误:在'Windows.UI.Xaml.DependencyObject'上未找到'maxGridCoulmns'属性。 BindingExpression:Path ='maxGridCoulmns' DataItem ='Windows.UI.Xaml.DependencyObject';目标元素为'Windows.UI.Xaml.Controls.VariableSizedWrapGrid'(Name ='null');目标属性是'MaximumRowsOrColumns'(类型'Int32')” - Ishti
我从未在帕斯卡命名法中遇到过 PropertyName。 - Tilak
1个回答

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接