xaml如何创建带有绑定颜色的圆形按钮

时间:2011-06-28 10:24:38

标签: c# silverlight

如何创建圆形按钮,但颜色受绑定影响。

我已经有这样的事了:

<Button  Command="{Binding ShowDetails}" Background="{Binding Color} />

并且将接收的颜色将采用此格式,例如:Colors.LightGray

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

如果你谷歌搜索“圆形按钮模板silverlight”,你会发现很多描述这个过程的博客文章。包括之前的StackOverflow问题:

Silverlight: Creating a round button template

基本步骤是

  1. 为您的按钮创建一个新的ControlTemplate,例如使用Ellipse呈现一个圆圈。
  2. 如果您希望Buttton.Background设置填充颜色,请使用TemplateBinding作为Ellipse.Fill属性。
  3. 例如:

     <Button Content="MyButton">
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <Ellipse Fill="{TemplateBinding Background}"/>
                    <ContentPresenter Content="{TemplateBinding Content}"
                                      HorizontalAlignment="Center"
                                      VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Button.Template>
    </Button>
    

答案 1 :(得分:0)

您必须为此按钮编写控件模板

 <Button Content="MyButton">
        <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Ellipse Fill="{TemplateBinding Background}"/>
                    <ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Grid>
            </ControlTemplate>
        </Button.Template>
    </Button>

答案 2 :(得分:0)

使用颜色绑定:

<UserControl.Resources>
        <Color x:Key="MyColor">LightGray</Color>

        <Style x:Key="RoundButton" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <Ellipse Width="40" Height="40" Stroke="#FF000000" StrokeThickness="1" Canvas.Left="141" Canvas.Top="61">
                                <Ellipse.Fill>
                                    <SolidColorBrush Color="{StaticResource MyColor}" />
                                </Ellipse.Fill>
                            </Ellipse>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>


<Grid x:Name="LayoutRoot" Background="White">
      <Button Style="{StaticResource RoundButton}" />
</Grid>

享受;)