WPF: как настроить универсальное пользовательское окно? - PullRequest
3 голосов
/ 18 февраля 2011

Это сложный вопрос, но я все равно попытаюсь объяснить ...

У меня есть окно пользовательского элемента управления , которое используется во всем моем приложении.Я сделал это потому, что хотел, чтобы различные окна и диалоговые окна были полностью настраиваемыми в моей программе.То есть кнопки сворачивания, максимизации, закрытия и рамки все настраиваемые.Это окно находится внутри моего generic.xaml.Теперь это работает, и все это хорошо.Я получил идею от http://www.codeproject.com/KB/WPF/CustomFrames.aspx

Теперь пользователи этого пользовательского окна пользовательские элементы управления в своем xaml, они в основном используют MyWindow в качестве корневого элемента:

<MyWindow>
         .... 
</MyWindow>

Но теперь я пытаюсь «вставить» определенные элементы в MyWindow из пользовательского элемента управления xaml.У MyWindow просто будет контейнер для их размещения.Например, они могут захотеть добавить кнопку панели инструментов, которая появляется прямо рядом с кнопкой свертывания.Так, например, у меня может быть пользовательский элемент управления, который выполняет следующее (где MyWindow является корневым элементом):

<MyWindow>

<MyWindow.ToolBar>
    <Button x:Name="BlaBla"/>
</MyWindow.ToolBar>

</MyWindow>

Это поместит «blabla» прямо рядом с кнопкой свертывания, например.Но мне интересно, возможно ли это сделать?Т.е. вся вещь MyWindow.ToolBar.Есть ли для этого какая-то конструкция, это прикрепленное свойство или что-то более странное?

1 Ответ

1 голос
/ 18 февраля 2011

Это определенно возможно, зависит от вашего выбора типов для DependencyProperty. Вы можете использовать IEnumerable и связать MyWindow.ToolBar dp с ItemsSource на вашем внутреннем ToolBar.

<ControlTemplate>
    <!-- ... snipped down to the ToolBar ... -->
    <ToolBarTray>
       <ToolBar x:Name="PART_ToolBar" />
    </ToolBarTray>
</ControlTemplate>

С соответствующим кодом в OnApplyTemplate для извлечения PART_ToolBar и создания нового Binding для ItemsSource.

РЕДАКТИРОВАТЬ: перечитывая ваш вопрос, кажется, я пропустил, что вы хотели добавить это в другом месте. Тогда я предлагаю использовать это свойство как свойство object, с ContentPresenter, связанным с MyWindow.ToolBar с набором Visibility, если привязка не {x:Null}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...