Основываясь на приведенном ниже xaml, знает ли кто-нибудь, почему, если я создаю 2 (или более) кнопки (с неявными стилями), только 1 из них фактически отображает содержимое, однако все отображают синюю границу.Button Содержимое не всегда отображается
<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 не может принадлежать более чем одному из родителей, и поэтому отображается в последней кнопке. подумайте о том, чтобы сделать Grid частью шаблона – ASh
Взгляните на четвертую марку в разделе «Примечания» в [ContentPresenter] (https://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter (v = vs.110) .aspx) в MSDN: * Если Content является объектом UIElement, отображается UIElement. Если у UIElement уже есть родитель, возникает исключение *. Однако, по-видимому, исключение не происходит, или оно ловутся внутри страны. – Clemens
Очень разочаровывавший, подумал, что это может быть проблемой, но меня смутило, поскольку не было возбуждено никаких исключений. –