2011-11-14 39 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> 

我想要的按鈕儘可能的大,已經工作的文本。
但由於文本長度不同,每個按鈕的文本大小也不同,這看起來很奇怪。
有沒有一種簡單的方法來告訴視框(或任何其他方式)採取最小的文本的大小,並將其用於每個按鈕?

回答

0

限制文字的大小隻是使用填充:

處理文本溢出是複雜的部分。由於某種原因(罪魁禍首是 - ButtonChrome)按鈕不會採取「TextBlock.TextTrimmingProperty」附加屬性,但是AttachedProperty機制是專門爲案件那樣)設計,讓你有兩種選擇:

  1. 重寫按鈕的模板,查找ButtonChrome,將其刪除並替換爲具有TextBlock的東西,將該TextBlock的文本綁定到ContentControl.Content。

  2. 自己管理你的文本溢出。訂閱SizeChanged事件,從事件參數中獲取大小(它可能在其他地方不可用),獲取填充值並確定文本是否超出可用大小。用「..」替換它的多餘部分。

道德 - 不值得去做。

我會創建統一的二次啓動按鈕並在其旁邊放置標籤。