【问题标题】:How to put Expander ToggleButton on right如何将 Expander ToggleButton 放在右侧
【发布时间】:2012-02-15 05:33:08
【问题描述】:

默认情况下,扩展器有一个左对齐的切换按钮,但在我的 WPF 应用程序中,我希望在没有 Expression Blend 帮助的情况下在标题右侧的切换按钮。只是普通的 XAML 和/或 C#。我的扩展器包含一个垂直方向的堆栈面板,其子标签为标签。

我选择了它,但 here 它说“扩展器控件没有任何命名部分”。

我找到了一个例子here。但它会覆盖默认的扩展器样式。

我认为附加的图像应该传达我想要的。怎么做。任何链接都会有所帮助。

【问题讨论】:

    标签: c# wpf expander


    【解决方案1】:

    有个技巧可以帮上忙

    <Expander Header="My Expander" 
              FlowDirection="RightToLeft">
        <Expander.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=Expander}, Path=Header}"
                           Width="{Binding RelativeSource={RelativeSource AncestorType=Expander}, Path=ActualWidth}" 
                           Margin="-30,0,0,0"
                           FlowDirection="LeftToRight">
                </TextBlock>
            </DataTemplate>
        </Expander.HeaderTemplate>
    </Expander>
    

    【讨论】:

    • 您能否解释一下您的答案与 MD.Unicorn 的答案有何不同?
    • 是的。随着他的回答,标题文本将与切换按钮一起右对齐。在我的解决方案中,标题文本仍然左对齐,只是 ToggleButton 从左移到右。
    • 虽然提问者没想到这个答案或者可能并不真正需要这个答案,但它帮助我解决了我自己的问题。干杯!
    【解决方案2】:

    使用这个:

    <Expander Header="Expander1" FlowDirection="RightToLeft">
        <TextBlock FlowDirection="LeftToRight">
        </TextBlock>
    </Expander>
    

    如果您不希望整个内容从右到左,请将您的内容添加到TextBlock

    【讨论】:

    • @NikhilAgrawal 正如我所说,您应该将您的内容放在 LeftToRight 容器中(在我的示例中为TextBlock)。您可以将StackPanelFlowDirection 设置为LeftToRight
    • 我按照你的建议做了。我的扩展器包含一个垂直方向的堆栈面板(Orientation = Vertical),其子标签(动态添加)。我设置了扩展器 FlowDirection="RightToLeft" 和 stackpanel FlowDirection="LeftToRight" 并且它起作用了。谢谢
    • 这会将标题对齐到窗口的右侧。
    猜你喜欢
    • 2011-01-30
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    相关资源
    最近更新 更多