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