Выравнивание текста заголовка расширителя

Поэтому я изменил ориентацию расширителя, чтобы выровнять его по вертикали, а не по горизонтали, но в закрытом состоянии текст заголовка расширителя выравнивается по горизонтали. Пожалуйста, скажите мне, что есть способ легко исправить это без наложения выражений и т. Д.

<Expander Header="My Header"> 

Я надеялся на что-то вроде AlignHeaderText по вертикали, но не вижу для этого вариантов? Есть ли у кого-нибудь другой способ "показать" мне?

Итак, взяв у наставника Х.Б., при условии, я придумал следующее:

    <StackPanel Orientation="Horizontal" Margin="0,0,342,0" Width="318">
            <StackPanel.Triggers>
                <EventTrigger RoutedEvent="Expander.Expanded" SourceName="expander1">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation From="0" To="1.2" Duration="0:0:0.45" Storyboard.TargetName="content" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleX)"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </StackPanel.Triggers>
            <Expander ExpandDirection="Right" Name="expander1" OpacityMask="#6C806969" Background="#FF807171">
                <Expander.LayoutTransform>
                    <RotateTransform Angle="90"></RotateTransform>
                </Expander.LayoutTransform>
                <Expander.Header>
                    <TextBlock
                   Text="HEADER"
                   Width="{Binding
                    RelativeSource={RelativeSource
                      Mode=FindAncestor,
                      AncestorType={x:Type Expander}},
                    Path=ActualWidth}"
                  />
                </Expander.Header>
                <Grid x:Name="content" Background="#FF807171" Width="178">
                    <Grid.LayoutTransform>
                        <ScaleTransform ScaleX="0" ScaleY="1"/>
                    </Grid.LayoutTransform>
                </Grid>

            </Expander>

К сожалению, это происходит с расширителем:

введите описание изображения здесь

Он помещает текст вверху, а кнопку посередине, я надеялся на кнопку вверху, а текст после кнопки?

Если я изменю Path=ActualWidth на Height, кнопка переместится вверх, но текст заголовка останется слева от кнопки, а не под ней?


person Kirsty White    schedule 15.04.2012    source источник


Ответы (3)


Назначьте TextBlock как Header с помощью синтаксиса элемента и примените _ 3_ как TextBlock's _ 5_, чтобы получить поворот. Если вам нужен вертикальный текст, можно сделать иначе.

person H.B.    schedule 15.04.2012
comment
Ничего страшного, буду ждать актуального ответа :) - person Kirsty White; 15.04.2012
comment
@KirstyWhite: Я думаю, вы упускаете суть, этот сайт - не то место, где мы пишем код, который вы должны писать. И я не собираюсь отказываться от своего уровня абстракции, потому что вы еще недостаточно прочитали о технологии. - person H.B.; 15.04.2012
comment
Lol @ H.B. Я бы не хотел, чтобы вы писали ответ, жалко мысль о сайте QnA ;-) Но я опубликую то, что я взял из вашего ответа, чтобы вы могли лучше ответить на вопрос. (обновлю только сейчас) - person Kirsty White; 15.04.2012
comment
@KirstyWhite: примените поворот только к TextBlock в заголовке, я сомневаюсь, что вы захотите повернуть содержимое. Также, если размещение кнопок отключено, это можно исправить только путем регулировки Template. - person H.B.; 15.04.2012
comment
‹Meta› Скорее плохой ответ, на мой взгляд, как бы технически он ни был. Во-первых, пример имеет большое значение и помогает избежать того, чтобы респондент выглядел педантичным и снисходительным. Мы здесь не для того, чтобы читать лекции по информатике и предлагать читателю упражнение. К счастью, кто-то другой решил привести пример ниже. Во-вторых, я подумал, что использование внешних ссылок вместо того, чтобы вставлять здесь детали, было обескуражено. - person CJBrew; 24.11.2017
comment
@CJBrew: это не рекомендуется в форме ответа, состоящего из см. Это сообщение в блоге. Мои ссылки всегда относятся либо к официальной документации, которая может помочь тем, кто еще не очень знаком с рассматриваемой технологией, либо к другим вопросам / ответам на сайте StackOverflow. Я придерживаюсь позиции, что в случае этого ответа код не требуется; любой, кто хоть немного знаком с WPF, сможет понять и применить его. Отвечая на вопросы, невозможно всегда начинать с нуля. Я предоставляю ссылку о синтаксисе элементов уже для новичков. - person H.B.; 24.11.2017
comment
@CJBrew: Кроме того, если у меня в настоящее время нет IDE, предоставить правильный пример кода сложнее, чем просто дать правильный ответ. - person H.B.; 24.11.2017
comment
@ H.B. Я согласен с тем, что предоставить правильный рабочий пример не всегда просто, если у вас нет IDE. Но поскольку это довольно элементарный вопрос, я бы сказал, что он заслуживает элементарного ответа. Отчасти это стиль (в том смысле, что у вас другой стиль ответов на вопросы, чем ожидалось), но OP явно нуждался в чем-то более явном (и о чем больше просили; и он явно был очень раздражен тем, что вы не предоставили его и в основном сказал, что я не могу беспокоиться). - person CJBrew; 24.11.2017
comment
Может быть, ты не это имел в виду, но я так прочитал. В любом случае, между вашим и другими решениями мне это помогло. - person CJBrew; 24.11.2017
comment
@CJBrew: Что ж, для меня это противоречивый вопрос. Со временем я все больше и больше стал давать обобщенные ответы, а не конкретные. Люди очень быстро воспринимают данный пример как единственный верный путь или даже не удосуживаются думать, а просто копируют и вставляют то, что им дано, не понимая основных концепций, лежащих в основе этого. Кто-то может возразить, что я не должен судить, как люди пишут код или используют ответы, но я лично не хотел бы нести ответственность за такое поведение. - person H.B.; 24.11.2017
comment
@CJBrew: Я знаю, что мой комментарий, возможно, прозвучал грубо, но не из злого умысла. Если бы я искренне не хотел отвечать на чей-то вопрос, я бы просто не стал этого делать. Есть, например, некоторых людей я считаю эксплуататорами и поэтому больше не буду отвечать на их вопросы, но это очень редко. - person H.B.; 24.11.2017

Мое решение (без других свойств) - на основе ответов Г.Б. и Шейха Нейамата:

<Expander ExpandDirection="Right">
  <Expander.Header>
    <TextBlock Text="Header">
      <TextBlock.LayoutTransform>
        <RotateTransform Angle="90"/>
      </TextBlock.LayoutTransform>
    </TextBlock>
  </Expander.Header>
  // Content - listbox in my case
</Expander>
person honzakuzel1989    schedule 23.03.2016

Пример здесь в поддержку приведенных выше предложений.

person Neyamat Ullah    schedule 02.12.2014