2010-01-28 2 views
2

Если у меня есть UserControl размещенный в Window, который выглядит как:WPF Установить заголовок окна от ребенка

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
> 
    <Grid> 
     <ContentPresenter Content="{Binding}" /> 
    </Grid> 
</Window> 

Как установить Window.Title от UserControl?

Дополнительное требование состоит в том, что UserControl может потянуть и установить заголовок окна от статического Resx файла такой, т.е. {x:Static p:Resources.MyViewTitle}

Редактировать

После этого еще некоторое исследование, я думаю, что Присоединенные свойства могут быть ответ. Как я могу реализовать свойство Window.Title, которое я могу разместить на любом дочернем объекте UserControl, что позволяет мне установить заголовок Window?

ответ

0

Вы можете создать событие для UserControl, на которое будет подписано родительское окно.

+0

Поскольку эти два разъединения достаточно хорошо, нет места для подключения событий. – djskinner

2

(Untested): используйте VisualTreeHelper.GetParent, чтобы пройти визуальное дерево вверх до тех пор, пока не достигнете объекта типа Window. Затем установите для заголовка значение Resources.ResxFileName.MyViewTitle (должно быть доступно в коде из-за автоматически генерируемых классов ресурсов).

+0

Есть ли решение XAML? – djskinner

+0

Хороший вопрос. Я думаю, вы могли бы использовать '{Binding RelativeSource = {RelativeSource Mode = FindAncestor, Type = {x: Type Window}}, Path = Title' для привязки к заголовку и использовать' {x: Static p: Resources.MyViewTitle} ' для привязки к значению, но я не уверен, как вы можете * соединить * эти две привязки ... – Heinzi

+0

Да, это примерно так же, как и я. – djskinner

Смежные вопросы