0

嗨,我有一个按钮样式,可以像这样重新模板样式

<Style x:Name="NoStyleButton" TargetType="Button">    
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                    <ContentPresenter  x:Name="ContentPresenterInButton"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

问题是我希望按钮的宽度与按钮内的内容相同。如果我在堆栈面板中放置具有这种样式的按钮,则按钮宽度与堆栈面板相同,当按钮内的内容很少(想想小文本块)时,这会导致问题,即使用户点击按钮,也可以按下按钮按钮内的 TextBlock。

我以为你可以做类似的事情

<Setter Property="Width" Value="{Binding ActualWidth, ElementName=ContentPresenterInButton}"/>

但这不起作用。

有什么想法吗?

4

2 回答 2

1

问题是 StackPanel 决定了您的 Button 宽度,而不是内容。您可以设置按钮水平对齐方式,使其不会拉伸以填充可用宽度:

<StackPanel Orientation="Vertical">
  <Button HorizontalAlignment="Left">foo</Button>
  <Button>bar</Button>
</StackPanel>

在此处输入图像描述

于 2012-07-24T07:37:40.530 回答
0

尝试:

<Button HorizontalAlignment="Stretch">Text</Button> 
于 2015-08-12T16:49:16.127 回答