5

次のスタイルが定義されている場合:

<UserControl.Resources>
    <Style TargetType="TextBlock" x:Key="ProblemStyle">
        <Setter Property="FontSize" Value="40"/>
        <Setter Property="FontWeight" Value="Bold"/>
    </Style>
</UserControl.Resources>

次に、ContentPresenter データを文字列にバインドすると、WPF で次の XAML を使用して、必要に応じてテキストのスタイルを設定できます。

<ContentPresenter Content="{Binding Problem}">
    <ContentPresenter.Resources>
        <Style TargetType="TextBlock" BasedOn="{StaticResource ProblemStyle}" />
    </ContentPresenter.Resources>
</ContentPresenter>

ただし、Silverlight では、これは機能しません。両方に有効な方法はありますか?

4

2 に答える 2

6

TextElement 添付プロパティを使用します。スタイルを設定することはできませんが、Textblock に影響を与えるプロパティのほとんどはそこにあります..

<ContentPresenter x:Name="ContentPresenter"
                              ContentSource="Header"
                              HorizontalAlignment="Left"
                              TextElement.FontFamily="Segoe UI"
                              TextElement.FontSize="12"
                              TextElement.FontWeight="Bold"
                              TextElement.Foreground="White"
                              RecognizesAccessKey="True" />
于 2015-08-26T12:00:01.263 に答える
0

最初に: アプリケーションが ContentPresenter をレンダリングしようとする前に、スタイル「ProblemStyle」がロードされていることを確認してください。Silverlight では、スタイルが定義されている順序によって違いが生じます。スタイルが最初に読み込まれていないと、何も読み取れない可能性があります。

最初の仮定は、ContentControl を使用して何かを表示していて、ContentPresenter がこのコントロール内にあるということです。

しかし、ContentControl のスタイルを作成してみませんか?

<Style x:key="ProblemStyle" TargetType="ContentControl">
  <Setter Property="FontSize" Value="40"/>
  <Setter Property="FontWeight" Value="Bold"/>
</Style>

次に、ContentControl の Style が「ProblemStyle」の StaticResource に設定されます。

デフォルトでは、ContentControl のテンプレートには ContentPresenter があるため、またはスタイルで ContentPresenter テンプレートを定義することもできます。

<Style x:key="ProblemStyle" TargetType="ContentControl">
  <Setter Property="FontSize" Value="40"/>
  <Setter Property="FontWeight" Value="Bold"/>
  <Setter Property="Template">
    <Setter.Value>
       <ControlTemplate TargetType="ContentControl">
          <Border>
             <ContentPresenter Content="{TemplateBinding Content}"/>
          </Border>
       </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

そこにあるテンプレートは、それがどこに配置される/配置される可能性があるかを示すプレースホルダーとしてのものです。

于 2013-12-16T19:19:14.077 に答える