2

基本的に、たとえばTextBlockoverを(applied to this )Buttonを使用してオーバーレイしたいのですが、デフォルトのテンプレートを削除したくありません。ControlTemplateButton

例:

<Grid Grid.Row="1" Grid.ColumnSpan="2">
    <Grid.Resources>
        <Style x:Key="myStyle" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <ContentPresenter />
                            <TextBlock Text="textBlock" 
                                Margin="10" Foreground="Red"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Grid.Resources>

    <Button Style="{StaticResource myStyle}" Content="button1"></Button>
</Grid>

そして、Buttonデフォルトのテンプレートが取り除かれます:

ここに画像の説明を入力

むしろ、次のようなものを受け取りたいです。

ここに画像の説明を入力

を使用して可能ControlTemplateですか?私はここのようにバインドしようとしてTemplatedParentContentPresenter.Contentました:

<ContentPresenter Content="{Binding 
        RelativeSource={RelativeSource Mode=TemplatedParent},
        Path=., 
        Mode=TwoWay}"/>  

または他の組み合わせですが、機能させることができませんでした。

編集:

TextBlockこれをボタン (単なる例) だけでなく任意の にも適用できるようにしControlたいので、すべてのControl. また、私はUserControlxaml を可能な限りきれいに保ちたいので (つまり、システム コントロールをTextBlock使用して)、 を作成しないことを好みControlTemplateます。.

4

1 に答える 1

1

ボタンにデフォルトのスタイルを追加し、それを変更してTextBlock. Button私の好みの 2 番目のオプションは、とTextBlockを含む新しい UserControl を作成することIsHitTestVisible=Falseです。次に、依存関係プロパティを追加して、ボタンとテキスト ブロックにバインドできるようにします。

于 2012-11-08T01:13:50.043 に答える