代码之家  ›  专栏  ›  技术社区  ›  Thorsten79

在数据模板内绑定grid.row/grid.column

  •  14
  • Thorsten79  · 技术社区  · 14 年前

    希望这不是一个骗局。

    我希望能够在XAML中执行以下操作:

    <DataTemplate DataType="{x:Type TestApp:ButtonVM}">        
            <Button 
                    Grid.Column="{Binding GridColumn}" 
                    Grid.Row="{Binding GridRow}" 
                    Content="{Binding Path=Info}" 
            />
    </DataTemplate>
    

    内容绑定工作正常,但网格、列和网格、行在生成的对象中不存在。即使我将它们设置为某个没有绑定的值(比如在grid.column=“1”)也不行。我窥探了应用程序,发现在我的网格中没有人设置过grid.column和grid.row。

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  20
  •   Thorsten79    14 年前

    在博客的帮助下自己解决了这个问题。

    据我所知,您无法在内部进行附加属性绑定。

    下面将立即解决此问题(itemcontainerStyle!):

    <DataTemplate DataType="{x:Type TestApp:GridVM}">
            <ItemsControl ItemsSource="{Binding Path=Children}">
                <ItemsControl.ItemContainerStyle>
                    <Style>
                        <Setter Property="Grid.Row" Value="{Binding GridRow}" />
                        <Setter Property="Grid.Column" Value="{Binding GridColumn}" />
                    </Style>
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Grid ShowGridLines="True"  Style="{Binding Path=Style}">
                            <Grid.RowDefinitions>
                                <RowDefinition Height=".5*" />
                                <RowDefinition Height=".5*" />                            
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width=".5*" />
                                <ColumnDefinition Width=".5*" />
                            </Grid.ColumnDefinitions>                        
                        </Grid>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
    </DataTemplate>