C# 未知可附加成员';Grid.Row';和';网格列';

C# 未知可附加成员';Grid.Row';和';网格列';,c#,.net,wpf,microsoft-metro,C#,.net,Wpf,Microsoft Metro,我是一个很长时间的WPF设计师,但对windows应用程序开发还不熟悉。我正在尝试将一组对象绑定到网格上,但在元素“FrameworkElement”上不断出现错误Unknown attachable member'(grid.Row)”,在元素“FrameworkElement”上不断出现错误Unknown attachable member'(grid.Column) 有人能给我解释一下如何通过样式设置各种网格连接属性吗 <ItemsControl ItemsSource="{Bind

我是一个很长时间的WPF设计师,但对windows应用程序开发还不熟悉。我正在尝试将一组对象绑定到网格上,但在元素“FrameworkElement”上不断出现错误
Unknown attachable member'(grid.Row)”,在元素“FrameworkElement”上不断出现错误
Unknown attachable member'(grid.Column)

有人能给我解释一下如何通过样式设置各种网格连接属性吗

<ItemsControl ItemsSource="{Binding}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid>
                <!-- Column and row definitions omitted for brevity -->
            </Grid>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="FrameworkElement">
            <Setter Property="(Grid.Row)" Value="{Binding Row}" />
            <Setter Property="(Grid.Column)" Value="{Binding Column}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

不要使用PropertyPath。您只需要一个合格的Owner.Property字符串

<Setter Property="Grid.Row" Value="{Binding Row}" />

取自

某些样式和模板属性(如Setter.Property)采用 表面上类似于PropertyPath的限定属性名。 但这不是一个真正的财产路径;相反,它是一个合格的 WPF XAML启用的owner.property字符串格式用法 与类型转换器结合使用的处理器 从属财产


事实证明,我上面发布的代码实际上有3个问题

As@LPL正确标识
Setter.Value
在使用PropertyPath的位置采用限定的属性名称。这里的解决办法是去掉括号:

第二个问题是样式目标类型。事实证明,metro网格附加属性不能应用于FrameworkElement的。这里的解决方案是使用更具体的内容更新目标类型:


最后,与Silverlight一样,这个。因此,即使在修复了前两个错误之后,setter实际上也在尝试将网格附加属性设置为类型绑定的实例。虽然不是那么直截了当,但所有的。总之,您可以使用setter设置自定义附加属性,这将反过来设置任何所需的绑定。

这可能只是另一个问题。在
System.Windows.Controls
命名空间中,在网格和ItemsControl之间还有许多这样的例子。我的问题是
windows.UI.Xaml.controls
命名空间中的windows app store控件。抱歉,我不知道metro控件中的情况有所不同。事实证明,括号是问题的一部分,而不是整个问题。metro grid attached属性不喜欢在
框架元素上设置。将样式的目标类型更新为
ContentPresenter
修复了此问题。现在要弄清楚为什么我的绑定没有被读取。。。