Использование привязки данных в DependencyProperty - PullRequest
1 голос
/ 17 апреля 2019

Я создал класс, который наследуется от Window и получил DependencyProperty с именем TitlebarContent.

public FrameworkElement TitleBarContent
{
    get { return (FrameworkElement)GetValue(TitleBarContentProperty); }
    set { SetValue(TitleBarContentProperty, value); }
}

// Using a DependencyProperty as the backing store for TitleBarContent.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty TitleBarContentProperty =
    DependencyProperty.Register("TitleBarContent", typeof(FrameworkElement), typeof(tkWindowControl), new PropertyMetadata(default(FrameworkElement)));

Внутри ResourceDictionary для стилей я добавляю ContentControl для этого свойства.Теперь я хотел бы использовать новый WindowObject в другом приложении и получить доступ к новому TitlebarContentProperty.Я могу видеть предметы внутри моего Titlebar, и я могу перемещать Window, изменять его размер и многое другое.Но я не могу связываться с этими предметами.Например, я хотел бы добавить справочную кнопку в Titlebar.Button показано, но я не могу щелкнуть по нему.

    <tk:tkWindowControl.TitleBarContent>
        <DockPanel Grid.Row="0"  FlowDirection="LeftToRight">
            <Button Content="Exit" Command="{Binding ExitApplicationCommand}" Height="60" Width="60" Background="Red"/>
        </DockPanel>
    </tk:tkWindowControl.TitleBarContent>

Мой DependencyProperty - это typeof(FrameWorkElement), потому что я хотел бы добавить несколько Buttons к заголовку заголовка.

Можно ли использовать мои привязки таким образом?

1 Ответ

1 голос
/ 17 апреля 2019

Установите для WindowChrome.IsHitTestVisibleInChrome присоединенного свойства Button или родительского элемента значение true:

<Button Content="Exit" WindowChrome.IsHitTestVisibleInChrome="True" ... />

В качестве альтернативы следует уменьшить значение свойства CaptionHeight * 1008.*.

...