gpt4 book ai didi

silverlight-4.0 - Silverlight 4 默认按钮服务

转载 作者:行者123 更新时间:2023-12-04 07:20:33 25 4
gpt4 key购买 nike

几个月来我一直在成功使用 David Justices Default Button example在我的 SL 3 应用程序中。此方法基于附加属性。

升级到 SL4 后,该方法不再有效,并且出现 XAML 异常:

Unknown parser error: Scanner 2148474880



有没有人在 SL4 中成功使用过这个(或任何其他)默认按钮附加行为?

有没有其他方法可以使用可用的新类在 SL4 中实现默认按钮行为?

谢谢,
标记

最佳答案

我们的最终解决方案还必须解决在按钮单击发生之前未更新支持属性的问题(如在所有 MVVM 模式中一样)。...
注: peer.SetFocus();
编辑:
添加了 XAML 示例。

public static 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) => {
var peer = new ButtonAutomationPeer(button);

if (arg.Key == Key.Enter) {
peer.SetFocus();
uiElement.Dispatcher.BeginInvoke((Action)delegate {

var invokeProv =
peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
if (invokeProv != null)
invokeProv.Invoke();
});
}
};
}

}

public static Button GetDefaultButton(UIElement obj) {
return (Button)obj.GetValue(DefaultButtonProperty);
}

public static void SetDefaultButton(DependencyObject obj, Button button) {
obj.SetValue(DefaultButtonProperty, button);
}
}

如何在 XAML 中应用:
<StackPanel>
<TextBox DinnerConfig:DefaultButtonService.DefaultButton="{Binding ElementName=MyButton}"
Text="Press Enter" />
<Button x:Name="MyButton"
Content="Click me" />
</StackPanel>

关于silverlight-4.0 - Silverlight 4 默认按钮服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com