Как заполнить StackPanel внутри UserControl? - PullRequest
0 голосов
/ 10 июня 2019

Я создаю пользовательскую панель, которая, по сути, просто изумительна StackPanel с некоторыми дополнительными функциями.Я собирался использовать UserControl, который содержит StackPanel, но я не знаю, как заставить мой UserControl принимать контент для заполнения StackPanel.

Это то, что я пытаюсь:

<UserControl
    x:Class="transformations.fold_panel"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:transformations"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Vertical">
        <Button Content="First" />
        <ContentControl Content="{x:Bind Content, Mode=OneWay}"></ContentControl>
    </StackPanel>
</UserControl>

Использование:

<local:fold_panel>
     <Button Content="Second" />
</local:fold_panel>

Когда я пытаюсь это сделать, я получаю следующую ошибку: WinRT originate error - 0x80070057 : 'The parameter is incorrect.'.

1 Ответ

1 голос
/ 10 июня 2019

Вы не можете связать Content StackPanel в UserControl Content со свойством Content того же UserControl.Это введет циклическую ссылку.

В вашем примере свойство Content fold_panel UserControl будет установлено на StackPanel, которое вы определили в разметке XAML.

Если вы хотите иметь возможность установить Content ContentControl в StackPanel, вы должны добавить пользовательское свойство зависимости к классу fold_panel и связать Contentсвойство ContentControl для этого:

<ContentControl Content="{x:Bind CustomContent, Mode=OneWay}" />

Затем вы можете установить свое собственное свойство примерно так:

<local:fold_panel>
    <local:fold_panel.CustomContent>
        <Button Content="Second" />
    <local:fold_panel.CustomContent>
</local:fold_panel>

Но если вы действительно хотите пользовательское StackPanel,Вы должны создать класс, который наследуется от StackPanel, а не UserControl.

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