0

これを ResourceDictionary に入れ、アプリケーション レベルでスタイルを定義します。

<Style x:Key="TextBlockStyle" TargetType="TextBlock">
    <Setter Property="Margin" Value="0,10,0,10"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}" />

(Extended WPF Toolkit から) xctk:PropertyGrid コントロール内にある特定の TextBlock のマージンを削除したいと考えています。上記の ResourceDictionary スタイルの数字を変更するだけで機能します。

現在、グローバル スタイルではなく、特定のウィンドウ XAML で PropertyGrid のスタイルをオーバーライドしようとしています。

<xctk:PropertyGrid>
    <xctk:PropertyGrid.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="Margin" Value="0,0,0,0"/>
        </Style>
    </xctk:PropertyGrid.Resources>
</xctk:PropertyGrid>

残念ながら、これは機能しません。PropertyGrid の TextBlock は変更されず、グローバル スタイルが維持されます。

更新しました:

xtck:PropertyGrid の内部には xctk:WatermarkTextBox があります。WatermarkTextBox の内部には次のものがあります。

<ContentPresenter x:Name="PART_WatermarkHost" Content="{TemplateBinding Watermark}"
    ContentTemplate="{TemplateBinding WatermarkTemplate}"
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
    isHitTestVisible="False"
    Margin="{TemplateBinding Padding}"
    Visibility="Collapsed" />

問題の TextBlock を明らかに生成するのは、この ContentPresenter です。

  1. ResourceDictionary のスタイルが適用され、マージンが変更されます。

  2. しかし、内部の私のスタイルはそれを上書きしません。

どうすればいいですか?

4

1 に答える 1

1

いくつかのテストを実行しましたが、問題を再現できません。セクションStyleに入れたものは、セクションに入れUIElement.Resourcesたものとまったく同じように機能します。StyleApp.Resources

UIElementにプロパティが直接または独自に設定されている場合UIElement.Style、同じプロパティを別の で別の値に設定しようとしてStyleもうまくいきません。Styleこれは、それが定義されている場所に関係なく当てはまります。

セクションの値を変更すると実際に違いが生じると本当に確信していますか? プロパティを赤または 100% 確信できる別の値に設定してみてください。MarginApp.ResourcesBackground

ちなみに、すでにご存知かもしれませんが、4 つの同じ値を持つプロパティを設定したい場合はMargin、次のように 1 つの値だけで設定できます。

<TextBlock Text="Something" Margin="0" />

更新 >>>

@Andrew、追加した XAML を見てください...答えがあると思います...次の行を見てください。

Margin="{TemplateBinding Padding}"

Marginプロパティは実際にはテンプレートの親の値から設定されるためPaddingPadding代わりにプロパティを設定してみてください。にリンクする必要TextBox.Marginがあります。

于 2013-09-13T14:12:15.150 に答える