0

こんにちは、このようなスタイルを再テンプレート化するボタンのスタイルがあります

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

問題は、ボタンの幅をボタン内のコンテンツと同じにしたいということです。このスタイルのボタンをstackpanelに配置すると、ボタンの幅がstackpanelと同じになり、ボタン内にコンテンツがほとんどない場合に問題が発生します(小さなTextBlockを考えてください)、ユーザーは他の場所をクリックしてもボタンを押すことができますボタン内の TextBlock。

私はあなたが似たようなことができると思った

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

しかし、それはうまくいきません。

何かご意見は?

4

2 に答える 2

1

問題は、コンテンツではなく、ボタンの幅を決定するのが StackPanel であることです。ボタンの水平方向の配置を設定して、使用可能な幅を埋めるために伸びないようにすることができます。

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

ここに画像の説明を入力

于 2012-07-24T07:37:40.530 に答える