我现在正在创建一个自定义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源属性。这似乎也不起作用。
请帮忙。提前谢谢。
答案 0 :(得分:0)
实际上在Silverlight 4中,如果使用按钮,则不能没有风格。我尝试了很多。甚至我试图给我在Button中声明的边框赋予一些颜色。最后我使用了一个来自UserControl
的单独控件。这对我帮助很大。当然它没有给我按钮的灵活性,但它给了我想要的东西。我现在可以直接从控件中选择Visual状态。