我正在寻找一种简单的方法来同步由ItemsControl生成的文本大小(按钮内容)。
我正在使用以下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 :(得分:0)
限制文本的大小只需使用Padding:
处理文本溢出是一个复杂的部分。由于某种原因(罪魁祸首是 - ButtonChrome)按钮不会采用'TextBlock.TextTrimmingProperty'附加属性,但是AttachedProperty机制专门针对这样的情况设计),为您提供两个选项:
覆盖按钮的模板,查找ButtonChrome,删除它并替换为具有TextBlock的东西,将TextBlock的文本绑定到ContentControl.Content。
自行管理文字溢出。对SizeChanged事件进行同步,从事件参数中获取大小(可能在其他任何地方都不可用),获取填充并确定文本是否超出可用大小。用“..”替换它的多余部分。
我会创建统一的二次启动按钮并在它们旁边放置标签。