2016-09-15 12 views
0

View of the buttonsテキストブロックのコンテンツが中央に配置されていません

こんにちは、最近私はリソース辞書を作成しました。私はボタンをグリッドの高さに合わせ、ボタンのコンテンツプレゼンターセクションのテキストブロックにあるリソースディクショナリで、水平と垂直のコンテンツの配置を以下のように中央に変更しました。

<Style x:Key="RButtonStyle" TargetType="Button"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <TextBlock x:Name="b" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center"> 
        <ContentPresenter 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" /> 
       ... 

はい、うまくいきました。しかし完璧ではない。上記のリンクを見て、私が言っていることを見てください。どこで詳しい情報を入手できますか、これについて私に助けてくれますか?

私はこれ以外のテキストブロックのコンテンツセクションで何も変更しませんでした。私のリソース辞書の完全なコードを望むなら、あなたのためにそれを掲示するかもしれません。あなたが直接TextBlockを使用しているので、HorizontalContentAlignmentプロパティがTextBlock中に存在していないよう

+0

申し訳ありませんが、コンテンツプレゼンターの縦方向または横方向の配置は、すでにそれと同じです(私は推測します)。コンテンツプレゼンター内に垂直/水平のコンテンツアライメントはありません。私はウェブサイトをチェックしたので、私は重複しません。 –

+0

申し訳ありません。これは設定者のプロパティ値セクションにあります。したがって、TextBlockにはHorizo​​ntal/VerticalContentAlignmentはありません。 –

+0

http://puu.sh/rcdVE/89f346f002.png このスナップショットは、 –

答えて

0

はそう、あなたは自分の中心にテキストを取得するには、「センター」へTextAlignmentプロパティを設定する必要はあり。

So;私は誤解だ場合を除き、オブジェクトツリー内に複数の子がありますので、ButtonContentが満たされている場合、それは現在エラーすべきと

<TextBlock x:Name="b" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      TextAlignment="Center"/> 

はしかし、あなたはあなたのコントロールテンプレートの親パネルが必要です。だから、単純なように子供たちを収容するために何かを追加したい場合もありますGridまたはStackPanelなど

のように;

<ControlTemplate TargetType="Button"> 
    <Grid> 
     <TextBlock x:Name="b" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       TextAlignment="Center"/> 
     <ContentPresenter 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center"/> 
    </Grid> 
</ControlTemplate> 

あなたがどこかに自分のテンプレートに含める必要があるButtonHorizontalContentAlignmentプロパティを使用したい場合。

例:

<TextBlock x:Name="b" 
      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
      VerticalAlignment="Center"/> 

関連する問題