none
TabItem Style RRS feed

  • Frage

  • In einem TabItem befindet sich ein Button im Header.  Folgende Darstellung nutze ich:

    <TabItem Style="{DynamicResource TabItemStyle2}">
                    <TabItem.Header>
                        <Button>
                            <Image Stretch="Uniform" Source="/CLIENTVISION;component/bilder/013.png"/>
                        </Button>                
                    </TabItem.Header>                
                </TabItem>


    Die Resource sieht folgendermaßen aus:

    <Style x:Key="TabItemStyle2" TargetType="TabItem">
                <Setter Property="Padding" Value="0"/>
                <Setter Property="Background" Value="LightGray"/>
                <Setter Property="BorderThickness" Value="0"/>
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Border Background="LightGray" Margin="-4">
                                <ContentPresenter>
                                    <ContentPresenter.Content>
                                        <Button Cursor="Hand" Height="20" Width="20" Margin="10 2 0 1">
                                            <Image Source="{Binding Source}"/>
                                            
                                        </Button> 
                                    </ContentPresenter.Content>
                                </ContentPresenter>
                            </Border>                        
                        </DataTemplate> 
                    </Setter.Value> 
                </Setter> 
            </Style>

    Das Problem ist das die Image Source sich immer wieder in Abhängigkeit von der Verwendung des Buttons ändert. Ich möchte die Source im Style gern an die Source des Buttons im TabItem binden aber es geht nicht. 

    Was mache ich falsch?


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.


    • Bearbeitet Thomas2705 Samstag, 5. April 2014 11:43
    Samstag, 5. April 2014 11:40

Antworten

  • Hallo,
    da du einen Button als Header angegeben hast und dieser das eigentliche Bild enthält, musst du zunächst angeben, dass das Bild als Content für den Button festgelegt wurde:

    <Image Source="{Binding Content.Source}"/>

    Dann würde die Bindung funktionieren

    Vielleicht ist folgender Weg aber besser geeignet? Lege einfach den Pfad zum Bild als Header-Eigenschaft fest:

    <TabItem Header="/CLIENTVISION;component/bilder/013.png" />

    Im Template kannst du nun die Source-Eigenschaft binden:

    <DataTemplate>
        <Border Background="LightGray" Margin="-4" Cursor="Hand">
            <Border Height="20" Width="20" Margin="10 2 0 1">
                <!--Wenn du willst, kannst du den Border wieder gegen den Button austauschen
    Den Sinn des Buttons verstehe ich allerdings nicht so recht.--> <Image Source="{Binding }"/> </Border> </Border> </DataTemplate>




    Tom Lambert - C# MVP
    Markiert bitte beantwortende Posts als Antwort und bewertet hilfreiche Beiträge. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Meine Seiten: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Thomas2705 Samstag, 5. April 2014 12:30
    Samstag, 5. April 2014 12:14
    Moderator

Alle Antworten

  • Hallo,
    da du einen Button als Header angegeben hast und dieser das eigentliche Bild enthält, musst du zunächst angeben, dass das Bild als Content für den Button festgelegt wurde:

    <Image Source="{Binding Content.Source}"/>

    Dann würde die Bindung funktionieren

    Vielleicht ist folgender Weg aber besser geeignet? Lege einfach den Pfad zum Bild als Header-Eigenschaft fest:

    <TabItem Header="/CLIENTVISION;component/bilder/013.png" />

    Im Template kannst du nun die Source-Eigenschaft binden:

    <DataTemplate>
        <Border Background="LightGray" Margin="-4" Cursor="Hand">
            <Border Height="20" Width="20" Margin="10 2 0 1">
                <!--Wenn du willst, kannst du den Border wieder gegen den Button austauschen
    Den Sinn des Buttons verstehe ich allerdings nicht so recht.--> <Image Source="{Binding }"/> </Border> </Border> </DataTemplate>




    Tom Lambert - C# MVP
    Markiert bitte beantwortende Posts als Antwort und bewertet hilfreiche Beiträge. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Meine Seiten: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Thomas2705 Samstag, 5. April 2014 12:30
    Samstag, 5. April 2014 12:14
    Moderator
  • Ich danke Dir sehr für die Hilfe.

    Thomas


    Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.

    Samstag, 5. April 2014 12:31