SilverLigth學習筆記--

iDotNetSpace發表於2009-07-15

如何解決Button不響應MouseLeftButtonDown與MouseLeftButtonUp事件的問題


在Silverlight 2 中的按鈕不能響應MouseLeftButtonDown 和 MouseLeftButtonUp 事件,為解決此問題,我們可通過建立自定義按鈕控制元件加以解決,
1、建立自定義按鈕控制元件,參見"SilverLigth學習筆記--如何在Silverlight中建立自定義Button控制元件"一文。

2、建立新專案,在新專案中引用前面建立的MyButton自定義按鈕(即引入MyButton.dll)。並在xaml檔案頭部中加入如下程式碼?:

 

xmlns:myContron="clr-namespace:MyButton;assembly=MyButton"

 

3、新增一個自定義按鈕和兩個TextBlock控制元件,新增後的完整程式碼如下:

 

<UserControl x:Class="ButtonMouseLeftClick.Page"
    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:myContron
="clr-namespace:MyButton;assembly=MyButton"
    Width
="400" Height="300">
   
<Canvas Width="300" Height="400" Background="Coral">
        
<myContron:MyButton Width="200" Height="50" Canvas.Top="50" Canvas.Left="50" Content="Click Me"
            MouseLeftButtonDown
="MyButton_MouseLeftButtonDown" MouseLeftButtonUp="MyButton_MouseLeftButtonUp" >
        
myContron:MyButton>
            
<TextBlock x:Name="TextBlock1" Width="80" Height="20" Canvas.Top="140" Canvas.Left="80"  Text="TextBlock1">TextBlock>
         
<TextBlock x:Name="TextBlock2" Width="80" Height="20" Canvas.Top="180" Canvas.Left="80"  Text="TextBlock2">TextBlock>
    
Canvas>
UserControl>

 

4、新增後臺處理程式碼

 

private void MyButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{

this.TextBlock2.Text = String.Empty;

this.TextBlock1.Text = "Down";

}

 

private void MyButton_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)

{

this.TextBlock1.Text = "Up"

}

 

5、生成專案執行即可看到結果

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-609226/,如需轉載,請註明出處,否則將追究法律責任。