2014-04-29 26 views
0

我有一個<Image>的WPF窗口,其<Rectangle>作爲其子FrameworkElement。我想要的行爲是讓矩形上的中間鼠標按鈕在圖像上移動,並在<Rectangle><Image>上左右移動鼠標,以使矩形減小/增大。我有<Rectangle>左右拖動的<Image>工作,以及由矩形處理的左/右點擊。我怎麼能通過<Image>來處理左/右MouseDown,所以我不必重複代碼來更改子項和父項中矩形的大小?如何在C#WPF中將孩子的MouseDown達到父級?

回答

0

在這裏,你可以做類似如下:

<Grid Background="Transparent" StackPanel.MouseDown="StackPanel_MouseDown"> 
    <StackPanel Margin="70" Background="DarkGray" MouseDown="StackPanel_MouseDown"> 
     <TextBlock x:Name="XTextBlock"></TextBlock> 
    </StackPanel> 
</Grid> 

後面的代碼:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (sender.GetType().Name.Equals("StackPanel")) 
     { 
      XTextBlock.Text = "I am direct raised from StackPanel."; 
     } 
     else //sender.GetType().Name.Equals("Grid") 
     { 
      XTextBlock.Text += "I am bubble raised from Grid."; 
     } 
    } 
} 

希望這將解決你的問題。

0

您可以通過如下使用PreviewMouseDown利用路由事件隧道行爲:後邊

<Grid Background="Transparent" PreviewMouseDown="Grid_PreviewMouseDown"> 
    <StackPanel Margin="70" Background="DarkGray" Grid.PreviewMouseDown="Grid_PreviewMouseDown"> 
     <TextBlock x:Name="XTextBlock"></TextBlock> 
    </StackPanel> 
</Grid> 

代碼:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (sender.GetType().Name.Equals("StackPanel")) 
     { 
      XTextBlock.Text += ", I am tunneled raised from StackPanel."; 
     } 
     else //sender.GetType().Name.Equals("Grid") 
     { 
      XTextBlock.Text = "I am direct raised from Grid."; 
     } 
    } 
} 

希望這將有助於。繼續編碼:)

+0

在我的情況下,稍微不同的是,我需要根據鼠標按鈕被按下來選擇性地處理孩子中的MouseDown。有沒有辦法解決這個問題? – user3583535

0

要檢查按下哪個按鈕,可以使用MouseButtonEventArgs。 例如

if(e.ChangedButton == MouseButton.Left) 
{ 
    //do something 
} 
0

看看在Thumb控制。您可以輕鬆地設立了9個大拇指電網這樣的:

+--+-----------+--+ 
| |   | | 
+--+-----------+--+  
| |   | | 
| |   | | 
| |   | | 
| |   | | 
| |   | | 
+--+-----------+--+  
| |   | | 
+--+-----------+--+ 

指定適當的遊標每個拇指,並根據他們的位置實現了大拇指拖動事件。它比自己處理鼠標下移/上移/移動事件更強大。

相關問題