在Uniformgrid中获取行数

时间:2013-10-30 05:07:22

标签: wpf xaml uniformgrid

我已将uniformgrid设置为itemscontrol ItemsPanel.Havent设置行数或列数。它根据屏幕大小进行调整。现在是否可以获取行数?

1 个答案:

答案 0 :(得分:0)

当你在StackOverflow上提问时,你真的应该提供更多信息。如果您指定是否要访问代码后面或视图模型中的行数(答案会有所不同),我猜你已经收到了答案。

我猜你想在后面的代码中访问它们...对于这个方法你需要实现这个方法:

public T FindVisualChild<T>(DependencyObject dependencyObject) where T : 
DependencyObject
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(dependencyObject, i);
        if (child != null && child is T) return (T)child;
        else
        {
            T childOfChild = FindVisualChild<T>(child);
            if (childOfChild != null) return childOfChild;
        }
    }
    return null;
}

然后使用这种方法:

UniformGrid uniformGrid = FindVisualChild<UniformGrid>(ItemsControl);

此示例使用此XAML:

<ItemsControl Name="ItemsControl">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="3" Rows="2" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>