【问题标题】:Disable scrolling if the cursor is over element如果光标在元素上,则禁用滚动
【发布时间】:2013-02-15 21:53:56
【问题描述】:

当光标位于 WPF 中的某个元素上时,我想禁用滚动。

如果鼠标在红色矩形上,滚动应该被禁用。 红色矩形在滚动查看器上。

有什么想法吗?

【问题讨论】:

    标签: wpf scroll


    【解决方案1】:

    我让它与这段代码一起工作:

    <Window.Resources>
        <converter:MouseOverToScrollBarVisibility x:Key="scrollVisibility" />
    </Window.Resources>
    <ScrollViewer VerticalScrollBarVisibility="{Binding IsMouseOver,
                    ElementName=rec,
                    Converter={StaticResource scrollVisibility}}">
        <Rectangle Height="50" Width="50" Fill="Red" x:Name="rec"/>
    </ScrollViewer>
    

    然后定义这个转换器:

    [ValueConversion(typeof(bool), typeof(ScrollBarVisibility))]
    sealed class MouseOverToScrollBarVisibility : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return ((bool)value) ? ScrollBarVisibility.Hidden : ScrollBarVisibility.Visible;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }
    }
    

    【讨论】:

    • 谢谢。我想保持滚动条可见。有可能吗?
    • @Ben,只需在转换器中返回 ScrollBarVisibility.Disabled 而不是 ScrollBarVisibility.Hidden
    • 为什么“禁用”和“隐藏”没有区别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2020-01-21
    • 2012-11-05
    相关资源
    最近更新 更多