有沒有像Canvas.IsVisible(point)
?我有一個Canvas
內ScrollViewer
。在畫布內部,我有一個自定義控件,應該始終在畫布的可見部分。WPF:有沒有像Canvas.IsVisible(點)?
有沒有一種方法,以確定畫布可見矩形或點?
有沒有像Canvas.IsVisible(point)
?我有一個Canvas
內ScrollViewer
。在畫布內部,我有一個自定義控件,應該始終在畫布的可見部分。WPF:有沒有像Canvas.IsVisible(點)?
有沒有一種方法,以確定畫布可見矩形或點?
你可以用帆布ZORDER財產,始終把你控制在畫布上的
這完全沒有解決這個scrollviewer問題 – 2011-03-02 14:29:34
我創建了一個檢查元素是否是一個容器內完全可見的擴展方法上面:
public static bool IsUserVisible(this FrameworkElement element, FrameworkElement container)
{
if (!element.IsVisible)
return false;
var bounds = element.TransformToAncestor(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight));
var rect = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight);
return rect.Contains(bounds);
}
在你的情況,你可以嘗試使用它像這樣:
myUserControl.IsUserVisible(scrollViewerWithMyCanvas);
另請參閱http://blogs.msdn.com/b/llobo/archive/2007/01/18/elements-visibility-inside-scrollviewer.aspx – 2011-03-02 14:28:44
'ActualHeight'和'ActualWidth'是'NaN'?這是如何處理的,如果是這樣的話? – 2011-03-02 14:29:31
@Robert - 感謝您的鏈接。它可能是有用的。 – 2011-03-02 14:31:23
'BringIntoView'不適合你嗎?您可以確定任何父級控件何時更新其佈局並適當地執行此操作。 – 2011-03-02 14:31:02
@Mr。失望:實際上我測試過,'BringIntoView()'將畫布移動到控件。我需要移動畫布上的白色控制。 – serhio 2011-03-02 15:25:06