2011-11-14 7 views
0

ItemsControlによって生成されたテキストサイズ(ボタンコンテンツ)を簡単に同期する方法を探しています。ItemsSourceから生成されたアイテムを同期する

私は、次のXAMLコードを使用しています:私はすでに作品できるだけ大きなボタンのテキストを、作りたい

<ItemsControl ItemsSource="{Binding UseCases}"> 
<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
    <WrapPanel /> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
    <Button Content="{Binding DisplayName}" Width="200" Height="200"> 
    <Button.ContentTemplate> 
    <DataTemplate> 
     <Viewbox> 
     <ContentPresenter Content="{Binding}" /> 
     </Viewbox> 
    </DataTemplate> 
    </Button.ContentTemplate> 
    </Button> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
</ItemsControl> 

を。
しかし、テキストの長さが異なるため、各ボタンのテキストサイズも異なり、奇妙に見えます。
Viewbox(またはその他の方法)に最小のテキストのサイズを取得し、すべてのボタンに使用するように簡単な方法がありますか?テキストのサイズを制限する

答えて

0

だけパディングを使用する:テキストのオーバーフローの取り扱い

は、複雑な部分です。

  1. :「TextBlock.TextTrimmingProperty」添付プロパティを取ることはありませんボタンが、しかしAttachedProperty機構はそのような場合)のために特別に設計されて、2つのオプションがあなたを残して - いくつかの理由(ButtonChrome犯人である)ことにより、

    ボタンのテンプレートを上書きし、ButtonChromeをルックアップして取り除き、TextBlockを持つ何かに置き換えて、TextBlockのテキストをContentControl.Contentにバインドします。

  2. 自分でテキストオーバーフローを管理します。 SizeChangedイベントのSibscribe、イベント引数からサイズを取得(他の場所では使用できない可能性があります)、パディングを取得して、テキストが使用可能なサイズを超えているかどうかを判断します。余分な部分を ".."に置き換えてください。

道徳的 - 価値がない。

私は均一な2次発射ボタンを作成し、それらの横にラベルを貼り付けます。

関連する問題