1

これを app.xaml で定義しています

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="FontSize" Value="12"></Setter>
    <Setter Property="FontFamily" Value="Cailibri"></Setter>
</Style>

これは Window1.xaml で定義されています

<Style x:Key="BASE">
            <Setter Property="Control.FontSize"  Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=MyFontSize}">
            </Setter>
            <Setter Property="Control.FontFamily"  Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=MyFontFamily}">
            </Setter>
            <Setter Property="Control.HorizontalAlignment"  Value="Left">
            </Setter>
        </Style>

<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource BASE}">
        </Style>

<Style TargetType="lc:LayoutItem" BasedOn="{StaticResource BASE}">
            <Setter Property="LabelStyle">
                <Setter.Value>
                    <Style TargetType="lc:LayoutItemLabel" BasedOn="{StaticResource BASE}">
                    </Style>
                </Setter.Value>
            </Setter>
        </Style>

<lc:LayoutControl x:Name="HeadLayout" lc:LayoutControl.CustomizationLabel="test"     ItemInsertionPointIndicatorStyle="{StaticResource myInsertionPointIndicator}"   HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                      AllowNewItemsDuringCustomization="False" AllowAvailableItemsDuringCustomization="True" Orientation="Horizontal">
<lc:LayoutGroup Orientation="Vertical" View="Group"   Margin="0,0,0,0"        HorizontalAlignment="Stretch" VerticalAlignment="Top">
<lc:LayoutItem Label=" CDFEG " x:Name="StoreName" >
   <TextBlock TextWrapping="Wrap" Text="ABCDEFG"/>
   </lc:LayoutItem>
 </lc:LayoutGroup>
</lc:LayoutControl>

fontsize または fontfamily プロパティを変更すると、app.xaml で TextBlock が定義されていない場合に正常に動作します。私はこれを長い間検索してきましたが、私には解決策がありません。どんなアドバイスも役に立ちます、thx。

4

1 に答える 1

0

DataTemplate を使用して解決されました。

<Style TargetType="lc:LayoutItem" x:Key="myLayoutItemStyle" BasedOn="{StaticResource BASE}">
        <Setter Property="LabelTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding}" >
                            <TextBlock.Style>
                                <Style  BasedOn="{StaticResource BASE}">
                                </Style>
                            </TextBlock.Style>
                        </TextBlock>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

http://documentation.devexpress.com/#WPF/DevExpressXpfLayoutControlLayoutItem_LabelTemplatetopicで確認してください。

于 2012-09-04T02:14:36.470 に答える