В моем WPF ListBox у меня есть стиль с ControlTemplate для ListBoxItem. Внутри этого ControlTemplate я определил метку. Исходя из некоторых деталей, мне нужно изменить размер шрифта метки. Итак, из моего кода программной части мне нужно определить, каким должен быть шрифт, а затем мне нужно его установить.
Вот мой стиль с ControlTemplate (я удалил некоторые ненужные элементы управления)
<Style x:Key = "RecordTabList" TargetType = "{x:Type ListBoxItem}">
<Setter Property = "Background" Value = "{DynamicResource RecordIndexTabBackcolor}" />
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate>
<Label
x:Name = "myLabel" Grid.Column = "0" Grid.ColumnSpan = "1" Grid.Row = "0" Grid.RowSpan = "1" Margin = "3,-2,0,-2" HorizontalAlignment = "Stretch" VerticalAlignment = "Stretch" Foreground = "{DynamicResource RecordIndexTabForeground}"
FontSize = "10" Height = "Auto" BorderThickness = "3,0,0,0"
Content = "{Binding Path=Name}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
Как я могу это сделать?





Возможно, вы сможете использовать ValueConverter в свойстве FontSize ... но я не уверен на 100%, работают ли они внутри ControlTemplate ... Кажется, я помню, как у Silverlight были проблемы с ним, но я не могу вспомнить, работал ли он в WPF.
Если я правильно вас понял, вы, вероятно, можете сделать что-то подобное приведенному ниже и просто изменить свойство FontSize самого ListBoxItem; он будет автоматически отражен на вашем ярлыке. Скопируйте это в VS и посмотрите, как это работает!
<Window.Resources>
<Style TargetType = "ListBoxItem">
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "ListBoxItem">
<Label Content = "{TemplateBinding Content}" FontSize = "{TemplateBinding FontSize}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<ListBox Margin = "12">
<ListBoxItem Content = "Test 1" FontSize = "14"/>
<ListBoxItem Content = "Test 2" FontSize = "18"/>
<ListBoxItem Content = "Test 3" FontSize = "22"/>
</ListBox>
</Grid>
Если вы хотите установить FontSize в коде позади, вы должны удалить FontSize из ControlTemplate, а затем установить его для ListBoxItem в коде программной части. Если вы хотите установить одинаковый размер для всех ListBoxItems, просто установите FontSize для ListBox в коде программной части.