2016-08-08 14 views
1

Ich habe eine customListView, in der ich eine Bildschaltfläche mit transparentem Hintergrund erstellt habe. Aber statt in allen Zeilen dargestellt sind, ist es nur in der letzten ReiheSchaltfläche nicht in allen Listenansichtszeilen

Button Style:

<Style TargetType="Button" x:Key="editButtonStyle" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
    <Setter Property="Width" Value="20" /> 
    <Setter Property="Height" Value="20" /> 
    <Setter Property="Content"> 
     <Setter.Value> 
      <Image Source="edit_icon.png" /> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
</Style> 

Der Call:

<DataTemplate> 
    <Button Style="{StaticResource editButtonStyle}"> 
     <Button.Template> 
      <ControlTemplate TargetType="Button"> 
       <ContentPresenter Content="{TemplateBinding Content}"/> 
      </ControlTemplate> 
     </Button.Template> 
    </Button> 
</DataTemplate> 

Antwort

1

Set x:Shared="False" auf editButtonStyle. Sie definieren eine Instanz von Image in Ihrem Stil, die natürlich nur einmal verwendet werden kann, wenn es ein shared Stil ist (irgendeine Art von WPF-Optimierung).

Dies würde in einer DataTemplate arbeiten, da die FrameworkElementFactory eine neue Image für jedes Element erstellen würde, aber es funktioniert nicht mit Stilen.

+0

Ich habe den Code auf die eigentliche Schaltfläche verschoben, da ich diesen Stil nur einmal verwenden werde und es funktioniert. Danke für den Tipp – AnishaJain