Используйте Radial Panel в Listbox, создав исключение VisualTree Single Element - PullRequest
1 голос
/ 13 октября 2010

У меня очень простая радиальная панель с несколькими свойствами зависимостей, например так:

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(); }

Проблема заключается в том, что всякий раз, когда я назначаю эту радиальную панель как панель элементов списка, я получаю исключение:

VisualTree of ItemsPanelTemplate должен быть одним элементом.

Вот как я устанавливаю ItemsPanel в XAML:

<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. Я пробовал в серебряном свете, и там нет никаких проблем.

Ценю вашу помощь. Спасибо

1 Ответ

0 голосов
/ 17 февраля 2011
...