【发布时间】:2012-02-25 03:45:52
【问题描述】:
我发现即使滚动条不可见,Silverlight 的 ScrollViewer 仍会获得焦点。
有其他人看到这个问题吗?当滚动条不可见时,是否有任何解决方法可以防止 ScrollViewer 充当制表位?
谢谢,
【问题讨论】:
我发现即使滚动条不可见,Silverlight 的 ScrollViewer 仍会获得焦点。
有其他人看到这个问题吗?当滚动条不可见时,是否有任何解决方法可以防止 ScrollViewer 充当制表位?
谢谢,
【问题讨论】:
怎么样:
<ScrollViewer IsTabStop="False" ...
【讨论】:
ScrollViewer 本身就是一个控件,无论滚动条(子控件)是否可见。如果您只希望控件在其滚动条可见时获得焦点,您可以绑定Focusable,使其仅在范围超出视口时为true。
至少在 Silverilght 4 及更高版本中有一个简单的解决方案。监听 ScrollViewer 上的 LayoutUpdated 事件,并根据滚动条的状态设置 IsTabStop 属性。
例如,如果您只使用垂直滚动条:
void myScrollViewer_LayoutUpdated(object sender, EventArgs e)
{
//this should only be a tabstop if the scrollbar is visible.
myScrollViewer.IsTabStop =
(myScrollViewer.ComputedVerticalScrollBarVisibility == Visibility.Visible);
}
【讨论】: