我控制了选择日期。您可以增加或减少日,月或年 只需滚动MouseWheel。 但是当我将此控件放在ScrollViewer中时,MouseWheel将滚动ScrollViewer和MyControl无法正常工作。 我进行了大量搜索,以防止ScrollViewer处理MouseWheel,但我做不到。
这是我的Xaml:
<ScrollViewer>
<StackPanel>
some other elements...
<controls:DateTimeSelect Width="400" Value="{x:Static system:DateTime.Now}"/>
some other elements...
</StackPanel>
</ScrollViewer>
答案 0 :(得分:1)
您可以从PreviewMouseWheel
注册ScrollViewer
事件,并将其转发到DateTimeSelect
控件。
此代码在第一个ScrollViewer中引导PreviewMouseWheel
事件:
private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (sender is ScrollViewer && !e.Handled)
{
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
var parent = ((Control)sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
}
}
有关更多信息,请参见https://serialseb.com/blog/2007/09/03/wpf-tips-6-preventing-scrollviewer-from/。
要详细了解如何在您的情况下使用它,请提供有关contol: DateTimeSelect
的更多信息。
答案 1 :(得分:0)
感谢您的回答。 我尝试了很多方法,但是我意识到ScrollViewer无法正常工作。 所以我做了一个新项目,并将所有文件从旧项目一步一步地复制到了新项目 每次更改后,我都会检查scrollerViewer是否正常启动。 我使用的是DevExpress MVVM框架,因此必须在Bootstarpper中创建并显示mainWindow,然后从App.xaml中删除StartupUri。 我意识到,这是我遇到的问题,每次我设置StartupUri并让App类向MainWindow展示任何东西时都没有错,但是当我手动创建MainWindow并展示ScrollViewer捕获MouseWheel并防止其子项拖拽它时。