C# [WPF] Klasse "Button" erweitern.

locomarco

Commander
Registriert
Aug. 2009
Beiträge
2.446
Hallöchen, kurz und knapp:
ich möchte die Klasse Button (das Control) um ein oder zwei Properties erweitern.
Geht das irgendwie ohne eine neue Klasse von Button abzuleiten?

Falls nicht, wie kann ich eine von Button abgeleitete Klasse im XAML Editor benutzen?
Hab schon
Code:
xmlns:btn="clr-namespace:TicTacToe"
...
<btn:ExtendedButton />
probiert, da heißt es dann aber der ExtendedButton-Typ wurde nicht gefunden.
IntelliSense zeigt das aber als Auswahl an.
 
Du könntest die zusätzlichen Informationen im Tag-Attribut speichern.
 
grünel schrieb:
Du könntest die zusätzlichen Informationen im Tag-Attribut speichern.

Davon würde ich abraten, wenn es Properties sind, an die du binden möchtest, funktioniert das im Tag sowieso nicht (zumindest nicht einfach).

Warum möchtest du nicht von Button ableiten? Das ist die einfachste Methode, das zu erreichen was du willst, und viel mehr Code hast du auch nicht wirklich.
 
grünel schrieb:
Du könntest die zusätzlichen Informationen im Tag-Attribut speichern.
Das funktioniert zwar, aber wenn ich da mehrere Variablen speichern will ist das ja nicht so optimal.

coldcut schrieb:
Warum möchtest du nicht von Button ableiten?
Naja wie gesagt, ich bekomms nich hin den neuen Button dann im Designer zu benutzen.

toeffi schrieb:
Das werd ich mal ausprobieren.

Danke euch :)



EDIT:
Hab mein Problem gelöst :)
Erst mit den Attached Properties, dann hab ich aber rausgefunden das ich die Projektmappe einfach mit F6 neu erstellen muss und schon wird meine von Button abgeleitete Klasse auch in der Designer Toolbox angezeigt.



EDIT 2:
coldcut schrieb:
wenn es Properties sind, an die du binden möchtest
Apropos Binding ....
Ich hab meiner Klasse jetzt noch
Code:
public Int32 DropShadowDepth { get; set; }
hinzugefügt.

Wie kann ich jetzt in XAML in einem Style an diese Property binden?
mit
Code:
blabla="{TemplateBinding DropShadowDepth}"
gehts nämlich nicht.
Da kommt dann:

Eine Instanz von "TemplateBindingExtension" kann nicht erstellt werden.


Darum gehts:
Code:
<Style x:Key="TicTacToeButtonStyle" TargetType="ext:ExtendedButton">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ext:ExtendedButton}">
                        <Grid>
                            <Ellipse Fill="{TemplateBinding Background}" 
                                     Stroke="{TemplateBinding BorderBrush}" 
                                     StrokeThickness="{TemplateBinding BorderThickness}">
                                <Ellipse.Effect>
                                    [COLOR="Red"]<DropShadowEffect ShadowDepth="{TemplateBinding DropShadowDepth}"/>[/COLOR]
                                </Ellipse.Effect>
                            </Ellipse>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
 
Zuletzt bearbeitet:
Zurück
Oben