2012-12-18 61 views
0

有人可以舉例說明如何使用XAML帽子具有三種狀態(懸停,普通,按下)來設置按鈕樣式。我希望按鈕的整個區域都覆蓋有一個圖像(三種不同狀態中的每一種都有),我希望文本位於頂部,同時對於不同的狀態也有三種不同的顏色。我已經有這樣的東西(沒有文本塊上的顏色狀態)。我在這一點上具有的問題是,正文塊阻止該按鈕undernearth輸入事件(ⅰ也還沒有實現對文本塊的顏色變化....ImageButton上的TextBlock(Windows 8 XAML/C#)

當前代碼:

<DataTemplate x:Name="SubjectItemTemplate"> 
    <Canvas Width="225" Height="225"> 
     <Button Canvas.Left="0" Canvas.Top="0" 
       Command="{Binding ElementName=LayoutRoot, Path=DataContext.NavigateToUnitsPage}" 
       CommandParameter="{Binding}"> 
      <Button.Template> 
       <ControlTemplate> 
        <Grid Background="{Binding LightThemeColor}" Width="205" Height="205"> 

         <controls:ImageButton HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,0,0,0" 
               NormalStateImageSource="{Binding ImageUriNormal}" 
               HoverStateImageSource="{Binding ImageUriHover}" 
               PressedStateImageSource="{Binding ImageUriPressed}" Command="{Binding ElementName=LayoutRoot, Path=DataContext.NavigateToUnitsPage}" 
       CommandParameter="{Binding}"/> 
         <TextBlock Text="{Binding Name}" FontSize="18" TextWrapping="Wrap" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,168,0,0" /> 

        </Grid> 
       </ControlTemplate> 
      </Button.Template> 

     </Button> 
    </Canvas> 
</DataTemplate> 
+0

你是什麼意思'文本塊阻止輸入事件? –

+0

當我將鼠標移動到圖像按鈕上時,圖像變爲懸停圖像。但是,當我將鼠標移動到文本塊(位於圖像內)時,圖像不會更改爲懸停狀態。我也無法通過點擊文本塊區域中的圖像來觸發命令。 –

+0

從你的XAML中,你的'Textblock'與你的'ImageButton'是一致的。 –

回答

0

,作爲與TextBlock預期ImageButton事件沒有被處理的原因是因爲TextBlock位於線與ImageButton並沒有包含在ImageButton內。要改變這一點,TextBlock必須被放置在ImageButton內。

<controls:ImageButton HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,0,0,0" 
     NormalStateImageSource="{Binding ImageUriNormal}" 
     HoverStateImageSource="{Binding ImageUriHover}" 
     PressedStateImageSource="{Binding ImageUriPressed}" Command="{Binding ElementName=LayoutRoot, Path=DataContext.NavigateToUnitsPage}" CommandParameter="{Binding}" > 
     <TextBlock Text="{Binding Name}" FontSize="18" TextWrapping="Wrap" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,168,0,0" /> 
</controls:ImageButton>