Попытка привязать все окно к пользовательскому контролю - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь привязать все мое окно к базовому пользовательскому контролю, чтобы этот пользовательский контроль управлял поведением родительского окна. Например, я хотел бы закрыть родительское окно из userControl. Я хочу создать пользовательский заголовок, который я могу использовать в других окнах. Я пытался использовать

<views:TitlebarUserCtrl BoundWindow="{Binding ElementName=Window1, Mode=OneWay}" ></views:TitlebarUserCtrl>    

.

public static readonly DependencyProperty BoundCurrentWindow = DependencyProperty.Register("BoundWindow", typeof(Window), typeof(TitlebarUserCtrl), new UIPropertyMetadata(""));
public Window BoundWindow
{
    get
    {
        return (Window)GetValue(BoundCurrentWindow);
    }
    set
    {
        SetValue(BoundCurrentWindow, value);
    }
}

Но я получаю только ошибку. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Спасибо за помощь. Я не знаю, что не работает. Я очистил папку obj, и ошибка исчезла. Изменить: и я установил UIPropertyMetadata ("") на ноль - это, казалось, это исправить.

Вот правильный код:

C#
public static readonly DependencyProperty BoundCurrentWindow = DependencyProperty.Register("BoundWindowProperty", typeof(Window), typeof(TitlebarUserCtrl), null);
public Window BoundWindowProperty
    {
        get
        {
            return (Window)GetValue(BoundCurrentWindow);
        }
        set
        {
            SetValue(BoundCurrentWindow, value);
        }
    }

WPF
<views:TitlebarUserCtrl BoundWindowProperty="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
0 голосов
/ 19 марта 2019

Вы можете привязать свое окно, используя относительный источник, который ищет элемент управления Type-Window:

<views:TitlebarUserCtrl BoundWindow="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
...