以下のxamlに基づいて、2つ(またはそれ以上)のボタン(暗黙的なスタイル)を作成すると、実際にそのうちの1つだけが実際にコンテンツを表示します。背後にあるコードをチェックボタンの内容が常に表示されない
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1">
<ContentPresenter Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Blue"/>
<Setter Property="Content">
<Setter.Value>
<Grid Background="Firebrick"/>
</Setter.Value>
</Setter>
</Style>
、すべての3つのボタンがまったく同じ内容を持って、まだそれが唯一のこれまでそれらの1
if (a.Style == b.Style && a.Style == c.Style)
{
if (a.Content == b.Content && a.Content == c.Content)
{
// comes in here!
}
}
すべての3つのボタンはまったく同じ内容を持っているが、UIElementのは、複数の親に属しているので、ボタンの最後に表示することはできません。グリッドをテンプレートの一部にすることを検討してください – ASh
[ContentPresenter](https://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter(英語)のRemarksセクションの第4の箇条書きを参照してください。 = vs.110).aspx)MSDNのページ:* ContentがUIElementオブジェクトの場合、UIElementが表示されます。 UIElementに既に親がある場合、例外が発生します*。しかし、明らかに例外は発生しないか、内部的にキャッチされます。 – Clemens
非常にイライラしていて、これは問題だったかもしれないと思っていましたが、例外が発生しないので私を混乱させました。 –