ich wirklich hatte gehofft, dass es eine aus der Box Lösung für eine solche gemeinsame Anwendungsfall in Silverlight 4, ich glaube sein würde, aber leider nicht da ist.
Es gibt eine andere Standard-Button-Implementierung von Patrick Cauldwell. Er verwendet auch angehängte Eigenschaften.
Ich habe dies in einer SL 4-Anwendung getestet und es scheint die Aufgabe zu erledigen.
Sie den Code finden Sie hier: http://www.cauldwell.net/patrick/blog/DefaultButtonSemanticsInSilverlightRevisited.aspx
Edit: I David Justice Code gezwickt haben, um es für Silverlight 4. Ich habe Arbeit zu bekommen verändert nur die GetDefaultButton und SetDefaultButton zu nehmen und Rückkehr ein DefaultButtonService. Die Verwendung ist die gleiche wie auf seiner Website angegeben. Dies sollte für Sie arbeiten:
Edit2: Added XAML Beispiel für Klarheit.
public class DefaultButtonService
{
public static DependencyProperty DefaultButtonProperty =
DependencyProperty.RegisterAttached("DefaultButton",
typeof(Button),
typeof(DefaultButtonService),
new PropertyMetadata(null, DefaultButtonChanged));
private static void DefaultButtonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var uiElement = d as UIElement;
var button = e.NewValue as Button;
if (uiElement != null && button != null)
{
uiElement.KeyUp += (sender, arg) =>
{
if (arg.Key == Key.Enter)
{
var peer = new ButtonAutomationPeer(button);
var invokeProv =
peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
if (invokeProv != null)
invokeProv.Invoke();
}
};
}
}
public static DefaultButtonService GetDefaultButton(UIElement obj)
{
return (DefaultButtonService)obj.GetValue(DefaultButtonProperty);
}
public static void SetDefaultButton(DependencyObject obj, DefaultButtonService button)
{
obj.SetValue(DefaultButtonProperty, button);
}
}
Wie in XAML anwenden:
<StackPanel>
<TextBox DinnerConfig:DefaultButtonService.DefaultButton="{Binding ElementName=MyButton}"
Text="Press Enter" />
<Button x:Name="MyButton"
Content="Click me" />
</StackPanel>
Vielen Dank. David's und Patricks Ansätze sind ziemlich genau die gleichen - obwohl ich mich freue zu sehen, dass das Problem nicht mit SL4 ist, muss ein bestimmtes Szenario mit unserer App verbunden sein. Danke, dass Sie sich Zeit genommen haben, uns zu antworten. +1 –
Sollte die "Get/SetDefaultButton" -Methode nicht einen ButtonButtonService zurückgeben? Der fragliche Typ ist der Typ des tatsächlichen Werts, der in der Eigenschaft abgerufen/gespeichert wird. Ich habe diese Änderung selbst vorgenommen und es funktioniert jetzt. – Trinition
Ja, Trinition, Sie haben Recht. Wenn Sie ein Beispiel hinzufügen möchten, stimme ich Ihrer Antwort zu. Sie können mein von unten hinzugefügtes Beispiel kopieren, wenn Sie möchten. –