none
Static Resource nur in einem Button als Content? RRS feed

  • Frage

  • Hallo, ich habe ein Grid als Resource definiert, welches ich als Content für 2 Buttons haben möchte:
    <Window x:Class="WpfApplication18.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <Grid x:Key="DropDown">
                <Path Fill="Black" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                    <Path.Data>
                        <GeometryGroup>
                            <EllipseGeometry Center="8,8" RadiusX="8" RadiusY="2"/>
                        </GeometryGroup>
                    </Path.Data>
                </Path>
                <Path Fill="Blue" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                    <Path.Data>
                        <GeometryGroup>
                            <EllipseGeometry Center="8,8" RadiusX="2" RadiusY="8"/>
                        </GeometryGroup>
                    </Path.Data>
                </Path>
    
            </Grid>
        </Window.Resources>
        <Grid>
            <Button HorizontalAlignment="Left" Margin="28,75,0,0" VerticalAlignment="Top" Width="101" Height="81">
                <ContentPresenter Content="{StaticResource DropDown}"/>
            </Button><!--Wird ohne Bild dargsestellt-->
            <Button HorizontalAlignment="Left" Margin="164,108,0,0" VerticalAlignment="Top" Width="101" Height="81">
                <ContentPresenter Content="{StaticResource DropDown}"/>
            </Button>
    
        </Grid>
    </Window>
    
    Der 1. Button wird aber immer ohne dem Inhalt dargestellt. Warum und wie kann ich das beheben?
    Sonntag, 18. November 2012 15:58

Antworten

  • Hallo ltWPFqt,

    Du kannst so etwas versuchen

     <Window.Resources>
            <ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}">
                <Border BorderBrush="Navy" BorderThickness="1"  Background="Gray">
                    <Grid >
                        <Path Fill="Black" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                            <Path.Data>
                                <GeometryGroup>
                                    <EllipseGeometry Center="8,8" RadiusX="8" RadiusY="2"/>
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                        <Path Fill="Blue" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                            <Path.Data>
                                <GeometryGroup>
                                    <EllipseGeometry Center="8,8" RadiusX="2" RadiusY="8"/>
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                    </Grid>
                </Border>
            </ControlTemplate>
            </Window.Resources>
        <Grid>
            <Button Name="v1" HorizontalAlignment="Left" Margin="28,75,0,0" VerticalAlignment="Top" Width="101" Height="81" Template="{StaticResource buttonTemplate}"/>   
            <Button Name="v2"  HorizontalAlignment="Left" Margin="164,108,0,0" VerticalAlignment="Top" Width="101" Height="81" Template="{StaticResource buttonTemplate}"/>
        </Grid>

    Gruß,

    Ionut

    • Als Antwort markiert ltWPFgt Sonntag, 2. Dezember 2012 20:47
    Dienstag, 20. November 2012 14:51
    Moderator
  • Hallo,

    hast du schonmal versucht das ControlTemplate als Template für Control zu schreiben? Danach kannst du ein Control als Content nehmen:

    <Button Name="v1" HorizontalAlignment="Left" Margin="28,75,0,0" VerticalAlignment="Top" Width="101" Height="81" >
        <Control Template="{StaticResource buttonTemplate}"/>
    </Button>




    Koopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/

    • Als Antwort markiert ltWPFgt Sonntag, 2. Dezember 2012 20:47
    Sonntag, 2. Dezember 2012 19:49
    Moderator

Alle Antworten

  • Hallo ltWPFqt,

    Du kannst so etwas versuchen

     <Window.Resources>
            <ControlTemplate x:Key="buttonTemplate" TargetType="{x:Type Button}">
                <Border BorderBrush="Navy" BorderThickness="1"  Background="Gray">
                    <Grid >
                        <Path Fill="Black" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                            <Path.Data>
                                <GeometryGroup>
                                    <EllipseGeometry Center="8,8" RadiusX="8" RadiusY="2"/>
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                        <Path Fill="Blue" Stroke="Transparent" StrokeThickness="0" Height="16" Width="16" >
                            <Path.Data>
                                <GeometryGroup>
                                    <EllipseGeometry Center="8,8" RadiusX="2" RadiusY="8"/>
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                    </Grid>
                </Border>
            </ControlTemplate>
            </Window.Resources>
        <Grid>
            <Button Name="v1" HorizontalAlignment="Left" Margin="28,75,0,0" VerticalAlignment="Top" Width="101" Height="81" Template="{StaticResource buttonTemplate}"/>   
            <Button Name="v2"  HorizontalAlignment="Left" Margin="164,108,0,0" VerticalAlignment="Top" Width="101" Height="81" Template="{StaticResource buttonTemplate}"/>
        </Grid>

    Gruß,

    Ionut

    • Als Antwort markiert ltWPFgt Sonntag, 2. Dezember 2012 20:47
    Dienstag, 20. November 2012 14:51
    Moderator
  • Danke für die Antwort. Es gibt nur ein Problem bei der Lösung, da ich die Geometrie für verschiedene Inhaltselemente, also Beispielsweise für Button, ComboBoxItem, ListBoxItem usw. benötige.

    Ich frage mich sowieso warum das nicht geht. :( Gibt es noch eine andere Möglichkeit das umzusetzen?

    Samstag, 24. November 2012 22:35
  • Hallo,

    hast du schonmal versucht das ControlTemplate als Template für Control zu schreiben? Danach kannst du ein Control als Content nehmen:

    <Button Name="v1" HorizontalAlignment="Left" Margin="28,75,0,0" VerticalAlignment="Top" Width="101" Height="81" >
        <Control Template="{StaticResource buttonTemplate}"/>
    </Button>




    Koopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/

    • Als Antwort markiert ltWPFgt Sonntag, 2. Dezember 2012 20:47
    Sonntag, 2. Dezember 2012 19:49
    Moderator
  • Oh, perfekt. So funktioniert das ganze. =)

    Da hätte ich aber auch selber drauf kommen können.....

    Sonntag, 2. Dezember 2012 20:47