2012-12-18 98 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>