我在MSDN上找到了符合我需要的代码,但是我遇到了问题。 (Here is the code)
有一个扩展普通按钮的DoubleClickButton类。我遇到的问题是我不能在xaml中使用这个类。
以下是我的错误: 无效类型:预期类型为“UIElement”,实际类型为“DoubleClickButton”。
我试图在类中更改以继承UIElement(即使按钮是UIElement的事实),也试图仅作为继承而留下UIElement但没有运气。
任何想法,我如何在xaml中使用这个新的增强控件?
此致 Danut
答案 0 :(得分:2)
这是一个稍微多一点的WPF版本:
public class DoubleClickButton : System.Windows.Controls.Button
{
[DllImport("user32.dll")]
static extern uint GetDoubleClickTime();
// Note that the DoubleClickTime property gets
// the maximum number of milliseconds allowed between
// mouse clicks for a double-click to be valid.
int previousClick = (int)GetDoubleClickTime();
public event EventHandler DoubleClick;
protected override void OnClick()
{
int now = System.Environment.TickCount;
// A double-click is detected if the the time elapsed
// since the last click is within DoubleClickTime.
if (now - previousClick <= (int)GetDoubleClickTime())
{
// Raise the DoubleClick event.
if (DoubleClick != null)
DoubleClick(this, EventArgs.Empty);
}
// Set previousClick to now so that
// subsequent double-clicks can be detected.
previousClick = now;
base.OnClick();
}
// Event handling code for the DoubleClick event.
protected virtual void OnDoubleClick(EventArgs e)
{
if (DoubleClick != null)
DoubleClick(this, e);
}
}
编辑使用GetDoubleClickTime()取代了SystemInformation,感谢Andreas Niedermair。
EDIT2 XAML中的示例样式。
<local:DoubleClickButton Content="Test" DoubleClick="DoubleClickButton_OnDoubleClick">
<local:DoubleClickButton.Style>
<Style TargetType="{x:Type local:DoubleClickButton}">
<Setter Property="Background" Value="Red"/>
</Style>
</local:DoubleClickButton.Style>
</local:DoubleClickButton>