내 ControlTemplate에서 레이블의 글꼴 크기를 변경하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/459307

문제

내 WPF ListBox에는 ListBoxItem 용 ControlTemplate이있는 스타일이 있습니다. 해당 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>

어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

내가 당신을 올바르게 이해한다면, 당신은 아마도 다음과 비슷한 일을 할 수 있고, 단순히 listboxitem 자체에서 fontsize 속성을 변경할 수 있습니다. 라벨에 자동으로 반영됩니다. 이것을 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>

다른 팁

당신은 a를 사용할 수 있습니다 ValueConverter Fontsize 속성에서 .. 그러나 그들이 ControlTemplate 내에서 일하는지 100% 확신하지는 않습니다. 나는 문제가있는 Silverlight를 기억하는 것 같습니다. 그러나 그것이 WPF에서 작동했는지 기억할 수 없습니다.

코드에서 Fontsize를 설정하려면 ControlTemplate에서 Fontsize를 제거한 다음 Code-Behind의 ListBoxItem에 대해 설정해야합니다. 모든 ListBoxItems에 대해 동일한 크기를 설정하려면 Code-Behind에서 Listbox의 Fontsize를 설정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top