2013-04-15 84 views
0

我有以下問題:我必須添加一些額外的按鈕到擴展器標題(爲了更改擴展器內容的表示方案 - 圖表或表格)。 但問題是,當我按下這些按鈕的擴展器正在崩潰或擴大(我只想改變內容)。這是我從網絡開發中記得的泡沫事件。我發現了以下解決方案:CancelBubble: e.Handled = true; 但它並不能幫助通過添加到標題按鈕防止崩潰/展開wpf擴展器

<Expander x:Name="xpdNumberDevices"> 
    <Expander.Header > 
     <Border Background="#E5E5E5"> 
      <StackPanel Width="605" Height="40" Orientation="Horizontal" HorizontalAlignment="Center"> 
       <Label Foreground="Black" Content="Number of Devices" 
         HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,0" FontSize="14" /> 
       <Image x:Name="imgGraphNumberDevices" Height="24" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="380,0,0,0" 
         MouseLeftButtonUp="btnNumDeviceGraph_Click"> 
        <Image.Style> 
         <Style TargetType="{x:Type Image}"> 
          <Setter Property="Source" Value="/Pictures/graph_button.png"/> 
           <Style.Triggers> 
            <Trigger Property="IsMouseOver" Value="True"> 
             <Setter Property="Source" Value="/Pictures/graph_button_over.png"/> 
            </Trigger> 
           </Style.Triggers> 
         </Style> 
        </Image.Style>  
       </Image> 
       <Image Height="24" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,0,0" 
       MouseLeftButtonUp="btnNumDeviceTable_Click"> 
        <Image.Style> 
         <Style TargetType="{x:Type Image}"> 
          <Setter Property="Source" Value="/Pictures/table_button.png"/> 
          <Style.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="Source" Value="/Pictures/table_button_over.png"/> 
           </Trigger> 
          </Style.Triggers> 
         </Style> 
        </Image.Style>  
       </Image> 
      </StackPanel> 
      </Border> 
     </Expander.Header> 
     <my:Chart Name="crtDeviceNumberChart" Title="Number of Devices" VerticalAlignment="Top" Margin="20,5,0,0" Height="280" Width="600" BorderBrush="#FFE5E5E5"> 
      <my:BarSeries Title="Devices" DependentValuePath="Key" IndependentValuePath="Value" ItemsSource="{Binding}" IsSelectionEnabled="True" /> 
     </my:Chart>        
    </Expander> 
+0

你可以發佈事件代碼嗎? –

+0

'code'private void btnNumDeviceTable_Click(object sender,RoutedEventArgs e) { e.Handled = true; xpdNumberDevices.IsExpanded = true; } –

回答

0

既然你處理的圖像就像一個按鈕,爲什麼不把它與它的圖像的按鈕?作爲一項測試,如果用一個按鈕替換圖像,您會看到單擊標題上的按鈕不會展開/摺疊Expander

你可以只修改按鈕的模板,它會看起來像一個形象:

<Button> 
    <Button.Template> 
     <ControlTemplate> 
      <Border HorizontalAlignment="Center" VerticalAlignment="Center" > 
       <Image Source="/Pictures/graph_button.png" Width="24" Height="24"/> 
      </Border> 
     </ControlTemplate> 
    </Button.Template> 
</Button 

我還建議學習一下命令,你可如何結合,以一當您單擊按鈕來執行操作。

+0

Tnx瑞安,它的作品完美!我只是想知道爲什麼圖像在這種情況下不起作用,哪些控件在那裏工作,哪些不是? –

+0

我不知道100%爲什麼,但我想象它與'Image'沒有處理「click」事件有關,所以它在可視化樹中冒出來,直到找到可以處理它的東西,即'Expander'標題。所以,任何能夠立即處理click事件的東西都會阻止它冒泡到頭部並防止崩潰/展開。 – Thelonias

+0

我很感謝您的快速和有益的迴應!謝謝。 –