c# - 日历控件的点击事件

标签 c# wpf events

我在日历控件上添加了一个点击事件。但是在我的实现中,这个事件不起作用。

我在Cal.cs控件中的代码:

#region click
public static RoutedEvent ClickEvent =
EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Cal));

public event RoutedEventHandler Click
{
    add { AddHandler(ClickEvent, value); }
    remove { RemoveHandler(ClickEvent, value); }
}

protected virtual void OnClick()
{
    RoutedEventArgs args = new RoutedEventArgs(ClickEvent, this);
    RaiseEvent(args);
}

protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
    base.OnMouseLeftButtonUp(e);
    OnClick();
}
#endregion

XAML 代码:

<Calen:Cal x:Name="Calendar" Margin="0,50,0,0" Click="Calendar_Click"/>

C# 代码:

private void Calendar_Click(object sender, RoutedEventArgs e)
{
    string t = "";
}

我没有找到任何解决方案。我不知道为什么这段代码不能正常工作。

你能帮我解决这个问题吗?

最佳答案

您需要将DataContext 设置为指向包含隐藏代码的类。

<UserControl>
   DataContext="{Binding RelativeSource={RelativeSource Self}}">
</UserControl>

这是必要的,因为不幸的是,默认情况下,DataContext 没有在 WPF 中正确设置。

有关 DataContext 的更多信息,请参阅 ReSharper WPF error: "Cannot resolve symbol "MyVariable" due to unknown DataContext" .

关于c# - 日历控件的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724826/

相关文章:

c# - 无法通过 SendGrid 发送电子邮件

c# - 第一次索引数组太慢了

wpf - 如何在 XAML 中显示工具提示?

c# - 是否可以使用 DllImport 访问命名空间?

c# - 与 Console.ReadLine() 相关的 RabbitMQ BasicConsume 和事件驱动问题

reactjs - ElectronJS React自定义菜单事件未定义

c# - DataGridViewColumn.CellTemplate 如何获取参数?

c# - 我如何以编程方式(使用反射?)更改方法体并将我的更改保存回磁盘

c# - Entity Framework 和可移植类库

带有事件对象的 iOS 事件总线库?