gpt4 book ai didi

c# - WPF ItemsControl 拉伸(stretch) ButtonContent 的 FontSize

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:08 24 4
gpt4 key购买 nike

我在自动调整按钮的(文本)内容时遇到问题。

这是我的按钮的样式。没什么特别的,但请注意 TextWrapping 属性!

<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock Text="{TemplateBinding Content}" TextWrapping="Wrap"/>
</Setter.Value>
</Setter>
</Style>

我根据我的按钮定义了一个 ItemTemplate:

<DataTemplate x:Key="MyItemTemplate">
<Button Content="{Binding Content}" Command="{Binding Command}" FontWeight="Bold" FontSize="{Binding FontSize}"/>
</DataTemplate>

我正在显示带有 3 列的 ItemsControl 中的项目列表:

<ItemsControl ItemsSource="{Binding MyItems}" ItemTemplate="{StaticResource MyItemTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>

到目前为止,这没什么特别的。但是现在,我希望所有按钮的 FontSize 尽可能地拉伸(stretch)到最大,内容最大的项目允许(所有项目最后都应该具有相同的 FontSize)。

我找到了一个 solution计算所需的文本大小。所以我可以计算一个按钮的最大 FontSize。但是因此我需要我的一个按钮的实际大小(所有按钮的大小都相同)。

我真的不知道如何获得大小并解决我的问题。如果有人有想法或完全不同的方法,那就太好了。

最佳答案

您可以使用 Button 的 ActualWidth 作为 CommandParameter 来获得这样的宽度:

<UserControl ....
.................>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding Command}" CommandParameter="{Binding ActualWidth,ElementName=button}"/>
</i:EventTrigger>
</i:Interaction.Triggers>

<DataTemplate x:Key="MyItemTemplate">
<Button Content="{Binding Content}" x:Name="button"
Command="{Binding Command}"
FontWeight="Bold" FontSize="{Binding FontSize}"/>
</DataTemplate>

你的命令应该是这样的:

        public ICommand Command => new DelegateCommand<object>(ExecuteCommand);

private void ExecuteCommand(object obj)
{
double width = (double)obj;
}

关于c# - WPF ItemsControl 拉伸(stretch) ButtonContent 的 FontSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com