Пользовательский элемент управления WPF отображает неправильно - PullRequest
1 голос
/ 12 февраля 2011

Я создаю элемент управления, похожий на сводную, в wpf, но у меня есть проблема с заголовком элемента управления. Он появляется только когда я изменяю размер окна, возможно потому, что элемент управления заголовка еще не измерен, когда отображается элемент управления pivot. Я, наверное, что-то забываю или делаю что-то не так, но просто не могу понять, что это такое.

Я создал решение, чтобы продемонстрировать тогда проблему. Вы можете скачать его здесь http://cid -25374d9051083633.office.live.com / self.aspx / Code / WpfApplication6.zip

У кого-нибудь есть решение этой проблемы или кто-то может указать мне правильное направление?

Спасибо.

1 Ответ

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

Кажется, есть несколько проблем с вашим кодом, мне не удалось заставить его работать, но это то, что я заметил.

Вы, вероятно, хотите создать свойство зависимости в вашем элементе управления pivotчто вы можете связать шаблон в Generic.xaml с вашим PivotHeaderItemsControl.

    public ObservableCollection<string> Headers
    {
        get { return (ObservableCollection<string>)GetValue(HeadersProperty); }
        set { SetValue(HeadersProperty, value); }
    }

    // Using a DependencyProperty as the backing store for Headers.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty HeadersProperty =
        DependencyProperty.Register("Headers", typeof(ObservableCollection<string>), typeof(Pivot), new UIPropertyMetadata(null));

Кроме того, ваши шаблоны для элементов ItemsControls кажутся неправильными, вы завернули ItemsPresenter в сетки, но это будет означать каждый элементItemsSource будет располагаться друг над другом.Если вы поместите ItemsPresenter в StackPanel или что-то подобное, все элементы должны появиться.

<StackPanel>
    <ItemsPresenter x:Name="ItemsPresenter"
                    Grid.Row="1"
                    Margin="{TemplateBinding Padding}"/>
</StackPanel>

Если вы обновите свой образец, я могу взглянуть еще раз.

...