1

我有一个非常简单的径向面板,其中包含一些依赖属性,如下所示:

public static readonly DependencyProperty RadiusProperty = DependencyProperty.Register("Radius", typeof(double), typeof(CircularPanel), new PropertyMetadata(50.0, new PropertyChangedCallback(RadiusChanged)));

private static void RadiusChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { ((CircularPanel)sender).Refresh(); }

问题是,每当我将此径向面板分配为列表框的项目面板时,我都会遇到异常:

ItemsPanelTemplate 的 VisualTree 必须是单个元素。

这就是我在 XAML 中设置 ItemsPanel 的方式:

<ItemsPanelTemplate x:Key="ItemsPanelTemplate2">
        <WpfApplication7:CircularPanel d:LayoutOverrides="Width, Height" AngleItem="{Binding Angle}" AnimationDuration="75" Radius="0" InitialAngle="90"/>
</ItemsPanelTemplate>

<ListBox ItemsPanel="{StaticResource ItemsPanelTemplate2}" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" ItemsSource="{Binding Hosts, Mode=OneWay}" >

如果我删除依赖属性的 PropertyChangedCallback 函数,面板可以工作,但由于我无法刷新面板,所以每当我更改绑定到列表框的集合时,所有项目都会相互叠加而不是循环绘制。这是在 WPF 中。我已经在silverlight中尝试过,那里没有问题。

感谢你的帮助。谢谢

4

0 回答 0