不使用样式在silverlight中创建自定义按钮

时间:2011-09-09 10:52:53

标签: c# .net silverlight

我现在正在创建一个自定义silverlight按钮。由于我想获得视觉状态,我不想使用样式或控件模板。所以,我写的是这样的:

<Button x:Class="MyNameSpace.MyImageButton"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

 <Grid x:name="LayoutRoot">
  <VisualStateManager.VisualStateGroups>
   <VisualStateGroup ...

   </VisualStateGroup>
  <VisualStateManager.VisualStateGroups>
  <Border (Various border styles)
 <StackPanel x:Name="ContentPresenter" Orientation="Horizontal">
                <Image Source="{Binding Path=this.ImageSource}" Stretch="Fill" />
                <!--ContentPresenter-->
                <ContentPresenter HorizontalAlignment="{Binding Path=this.HorizontalContentAlignment}"
                                                        VerticalAlignment="{Binding Path=this.VerticalContentAlignment}" >
                        <TextBlock  Text="{Binding Path=this.Content}" />
                </ContentPresenter>

            </StackPanel>
  </Border>
 </Grid>
<Button.BorderBrush>
.....
<Button.BorderBrush>
</Button>

但样式似乎不起作用。它显示默认按钮样式。如何使它工作。我还注册了一个Image源属性。这似乎也不起作用。

请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

实际上在Silverlight 4中,如果使用按钮,则不能没有风格。我尝试了很多。甚至我试图给我在Button中声明的边框赋予一些颜色。最后我使用了一个来自UserControl的单独控件。这对我帮助很大。当然它没有给我按钮的灵活性,但它给了我想要的东西。我现在可以直接从控件中选择Visual状态。