3

首先,我正在使用 C# 和 XAML 编写适用于 Windows 8 的 Windows Store 应用程序。我正在使用 aGridView来显示对象的分组集合。每个组都显示为一个单独的列,其中显示了相关的项目。

这很好用,但我希望ItemsPanel每列的都是一个Canvas面板。

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <Canvas />
    </ItemsPanelTemplate>
</GroupStyle.Panel>

现在我Canvas.Top在 xaml 中设置了一个静态数字。这像预期的那样工作。

<GridView.ItemContainerStyle>
    <Style TargetType="GridViewItem">
        <Setter Property="Canvas.Top" Value="50" />
    </Style>
</GridView.ItemContainerStyle>

但是,如果我使用数据绑定,它就不起作用。

<Setter Property="Canvas.Top" Value="{Binding Distance}" />

绑定不适用于使用 Visual Studio 2012 进行 Windows 8 应用商店应用开发中的样式和设置器?我该如何解决这个问题,我可以从属性中为每个项目动态设置 Canvas.Top?

4

2 回答 2

1

WinRT 不支持样式设置器中的绑定,类似于版本 5 之前的 Silverlight。请参阅此答案,该答案也与绑定相关ItemContainerStyle(建议使用一些附加属性的解决方法)。

或者,您可以在生成项目容器时在代码中设置属性值/绑定 - 子类化GridView并覆盖ItemsControl.PrepareContainerForItemOverride之类的内容以设置从项目容器到模型项目的绑定。

于 2013-02-04T10:55:07.653 回答
0

似乎将 Styles 中的属性绑定到 ViewModel 不可用。
Canvas.Top 是一种附加属性。
如果要动态更改 的每个项目的属性Canvas.Top可以在代码隐藏中进行
提取每个GridViewItem'sCanvas然后设置其 Top 属性。

于 2013-02-04T10:31:55.497 回答