WPF UserControl внутри другого UserControl - PullRequest
7 голосов
/ 16 октября 2010

Я хочу установить UserControl как Content другого UserControl в XAML, таким же образом вы можете установить Button's Content как что-либо

Допустим, мой "внешний" UserControl выглядит так:

<MyUserControl>
   <Grid>
      <Border FancyPantsStyling="True">

         <-- I want to insert other controls here -->

      </Border>
   </Grid>
</MyUserControl>

И я бы хотел создать такой пример:

<local:MyUserControl>
   <local:MyUserControl.Content>
      <local:AnotherControl />
   </local:MyUserControl.Content>
</local:MyUserControl>

Как мне спроектировать MyUserControl, чтобы отобразить Content в определенном месте?

Ответы [ 2 ]

4 голосов
/ 16 октября 2010

Все, что вы помещаете в XAML вашего UserControl, это его содержимое, поэтому вы не можете добавить что-то еще, установив свойство Content. Есть несколько разных способов справиться с этим. Если у вас нет ничего в коде для MyUserControl, вы можете просто избавиться от него и использовать что-то вроде:

<ContentControl>
    <ContentControl.Template>
        <ControlTemplate TargetType="{x:Type ContentControl}">
            <Grid>
                <Border FancyPantsStyling="True">
                    <ContentPresenter/>
                </Border>
            </Grid>
        </ControlTemplate>
    </ContentControl.Template>

    <local:AnotherControl/>
</ContentControl>

Если у вас есть код, который не имеет прямого доступа к элементам XAML, вы можете сделать то же самое с вашим существующим элементом управления (поскольку UC наследуется от ContentControl):

<local:MyUserControl>
    <local:MyUserControl.Template>
        <ControlTemplate TargetType="{x:Type local:MyUserControl}">
            <Grid>
                <Border FancyPantsStyling="True">
                    <ContentPresenter/>
                </Border>
            </Grid>
        </ControlTemplate>
    </local:MyUserControl.Template>
</local:MyUserControl>

Если вам необходимо сохранить существующее содержимое, подключенное к вашему коду, вы можете использовать DataTemplate для передачи внешнего содержимого (в новый DP на MyUserControl) и применить этот шаблон к ContentControl в XAML UC.

0 голосов
/ 16 октября 2010

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

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