ContentControl BackGround, BorderBru sh Не будет изменен в UWP - PullRequest
0 голосов
/ 31 марта 2020
ContentControl contentControl = new ContentControl();
StackPanel stackPanel = new StackPanel();
stackPanel.Height = 50;
stackPanel.Width = 100;
//stackPanel.Background = new SolidColorBrush(Colors.Green);
contentControl.Background = new SolidColorBrush(Colors.Red);
contentControl.BorderBrush = new SolidColorBrush(Colors.BlanchedAlmond);
contentControl.BorderThickness = new Thickness(5);
contentControl.Content = stackPanel;

Когда я устанавливаю фон для стека, он работает, но не работает для управления контентом ... мне нужен фон управления контентом. !!

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Как сказал @Joey, ContentControl внутренне полагается на ContentPresenter для работы, но свойство Background, установленное в ContentControl, не передается внутреннему ContentPresenter. Поэтому нам нужно переопределить стиль по умолчанию.

Добавьте этот код в App.xaml:

<Application.Resources>
    <Style TargetType="ContentControl">
        <Setter Property="HorizontalContentAlignment" Value="Left" />
        <Setter Property="VerticalContentAlignment" Value="Top" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ContentControl">
                    <ContentPresenter Content="{TemplateBinding Content}"
                                      ContentTemplate="{TemplateBinding ContentTemplate}"
                                      Margin="{TemplateBinding Padding}"
                                      Background="{TemplateBinding Background}"
                                      ContentTransitions="{TemplateBinding ContentTransitions}"
                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

После этого вы можете установить цвет фона для ContentControl.

Спасибо.

0 голосов
/ 31 марта 2020

Как выглядит шаблон элемента управления для вашего ContentControl? Я думаю, это всего лишь один ContentPresenter и ничего больше. Особенно ничего, что имеет TemplateBinding к свойствам, которые вы пытаетесь изменить. Свойства элемента управления магическим образом не действуют, если только шаблон элемента управления не включает их.

Что-то вроде следующего шаблона элемента управления, вероятно, будет работать в вашем случае:

<ControlTemplate TargetType="ContentControl">
  <Border BorderBrush="{TemplateBinding BorderBrush}"
          BorderThickness="{TemplateBinding BorderThickness}"
          Background="{TemplateBinding Background}">
    <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}"
                      Content="{TemplateBinding Content}"
                      Margin="{TemplateBinding Padding}"/>
  </Border>
</ControlTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...