0
我CustomItemsControl如下所示:設置寬度和ItemsControl的兒童的身高
<local:CustomItemsControl x:Name="CustomItemsControl" >
<local:CustomItemsControl.ItemTemplate>
<DataTemplate>
<Border x:Name="rectangle" Background="Orange" CornerRadius="5" />
</DataTemplate>
</local:CustomItemsControl.ItemTemplate>
</local:CustomItemsControl>
取決於哪個我CustomItemsControl包含,它應該計算寬度和「容器」的相關文件高度的物品的數量。
我想我可以通過調用項目的Measure/Arrange方法來實現。但我的代碼似乎並不具有((實際)寬度或(實際)高度爲NaN或0)
public class CustomItemsControl : ItemsControl
{
protected override Size MeasureOverride(Windows.Foundation.Size availableSize)
{
Windows.Foundation.Size size = base.ArrangeOverride(availableSize);
if (ItemsSource != null)
{
double CellWidth = size.Width/Items.Count;
foreach (var Item in Items)
{
DependencyObject Container = ContainerFromItem(Item);
if(Container!=null)
{
FrameworkElement Element = Container as FrameworkElement;
//Element.Width = CellWidth;
//Element.Height = CellWidth;
Element.Measure(new Size(CellWidth, CellWidth));
Element.Arrange(new Rect(0, 0, CellWidth, CellWidth));
}
}
}
return size;
}
}
該項目將不會,除非你設置的寬度和高度顯示在項目的大小產生任何影響的邊界(例如10)。我嘗試完成我的CustomItemsControl計算項目的寬度和高度。我做錯了什麼?我怎樣才能完成我的計劃?
謝謝!我怎樣才能定位項目垂直?使用上述解決方案,它們顯示爲垂直 – Briefkasten
您是否需要在兩個方向之間切換? – Clemens
是的。順便說一句。我自己想出來了。我改變了'var cellWidth = size.Height/Children.Count;'和'childRect.Y + = cellWidth;':) – Briefkasten