我需要在(矩形/面積/邊界)中找到UIElement
s。如何在WPF矩形中找到UIElements?
主窗口我做了以下內容:
- 我註冊鼠標按下作爲起始位置。
- 我regsiter鼠標向上的位置。
- 現在我需要在開始 位置和結束位置之間的矩形中找到ll(按鈕,文本框等)。
我在msdn中發現HitTest
的方法,但它只是一個點。我認爲,在創建的 矩形中遍歷所有點都是性能災難。基於MVVM模式
http://msdn.microsoft.com/en-us/library/ms752097.aspx
我的代碼:
private ObservableCollection<UIElementViewModel> wells;
private Point stratPoint; // Mouse down
public ICommand MouseUpRightCommand
{
get
{
if (this.mouseUpRightCommand == null)
{
this.mouseUpRightCommand = new RelayCommands(
param =>
{
if (param is MouseButtonEventArgs)
{
var e = (param as MouseButtonEventArgs);
//Set the end point
endPosition = e.GetPosition(((ItemsControl)e.Source));
// for example, here I want to find all controls(UIElements) in the
// founded rectangle of stratPoint and endPosition.
}
});
}
return this.mouseUpRightCommand;
}
}
任何其他想法或一個更好的方法?
感謝
這聽起來很不錯,我現在試試看,謝謝。 – 2012-04-27 15:28:39
嗨,真的,謝謝你的回答,它的工作,但問題這種方法傷害MVVM模式:ObservableCollection井中viewModel是問題FrameWorkElement是一個視圖。 –
2012-04-27 16:03:58
你說得對。 但你應該看看這裏: [link](http://stackoverflow.com/questions/1083224/pushing-read-only-gui-properties-back-into-viewmodel) 而且可能會創建一個FramworkElementViewModel – astreal 2012-04-27 16:46:54