2013-05-14 20 views
2

我在爲表單創建自定義標題欄時遇到了問題。它包含一個搜索文本框以及幾個滑塊,如圖所示: Example image 現在,想象一下,作爲標題欄 - 一切不是控件本身的一部分(被邊框元素包圍的文本框,滑塊)需要可拖放才能拖拽。然而這無濟於事WPF網格中控件的可點擊區域

<Grid MouseDown="TitleGridMouseDown"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="135"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="200"/> 
     </Grid.ColumnDefinitions> 
     <Slider Grid.Column="1" Margin="5 15 5 0" Width="100" MouseDown="TitleGridMouseDown"/> 
     <Slider Grid.Column="2" Margin="5 15 5 0"/> 
     <Border Grid.Column="3" CornerRadius="10" BorderThickness="1" BorderBrush="White" Width="180" Height="20" Background="White"> 
      <TextBox Background="Transparent" BorderThickness="0" Height="20"/> 
     </Border> 

    </Grid> 

我已經試過這一點。在兩個滑塊之間有一小部分,就像幾個像素區域,實際上它可以工作(DragMove();事件本身)。 WPF中這種類型的東西我沒有太多經驗,但我覺得這個區域縮小到了控制範圍。例如,如果我將邊框對象放入按鈕並嘗試將事件綁定到按鈕,則沒有任何更改。

我該如何解決這個問題?

+0

你有沒有嘗試在'Grid'上使用'PreviewMouseDown'? – 2013-05-14 01:01:22

+0

好吧PreviewMouseDown實際上開始工作。不過,它似乎有禁用鼠標點擊和拖動底層元素的功能的明顯副作用...即我不能單擊文本框或拖動滑塊,因爲它只是拖動窗口...嗯.. – NeroS 2013-05-14 01:59:13

+0

正確的我設法通過一些破解來解決這個問題。我在網格中的同一個單元格中放置了一個矩形,給它透明填充,然後將mousedown事件附加到它。我不確定它是否有任何負面影響,它肯定感覺像是黑客,但是......它奇怪地完美無瑕地工作。 – NeroS 2013-05-14 06:57:52

回答

6

這裏你的問題是,你想捕獲網格元素MouseDown事件。由於您的網格沒有背景設置,因此默認爲null。 MouseDown事件沒有得到提升。想想它是否正在通過電網而沒有實際擊中電網。頂部網格上的Background=Transparent應該可以解決問題。