按钮宽度相对于其contentpresenters宽度

时间:2012-07-24 07:10:06

标签: windows-phone-7 silverlight-4.0

嗨我有一个按钮的样式,重新模仿这样的风格

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

问题是我希望按钮的宽度与按钮内的内容相同。如果我将一个带有此样式的按钮放在堆叠面板中,按钮宽度与堆叠面板相同,当按钮内部的内容很少时会导致问题(想想小的TextBlock),用户即使按下按钮也可以按下按钮按钮内的TextBlock。

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

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

但那不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

问题是StackPanel指示你的Button宽度,而不是内容。您可以将按钮设置为水平对齐,以便它不会拉伸以填充可用宽度:

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

enter image description here

答案 1 :(得分:0)

尝试:

<Button HorizontalAlignment="Stretch">Text</Button>