我已将uniformgrid设置为itemscontrol ItemsPanel.Havent设置行数或列数。它根据屏幕大小进行调整。现在是否可以获取行数?
答案 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>