2011-06-28 57 views
1

如何創建圓形按鈕,但受綁定影響的顏色。xaml如何創建具有綁定顏色的圓形按鈕

我已經是這樣的:

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

和將要收到的將是這種格式的顏色,例如:Colors.LightGray

誰能幫助我?

+1

你應該介意你的語言,而評論。 –

+0

-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> 
+1

你在這裏犯了一些錯誤,其中是ContentPresenter.Content的綁定?此外,您的橢圓的TemplateBinding會更好 – ColinE

+1

另外... Silverlight不支持x:類型標記擴展! – ColinE

+0

你是對的,我想在WPF方面,我的錯誤 –

3

如果谷歌爲「圓形按鈕模板的Silverlight」,你會發現很多描述這一過程的博客文章。包括以前的StackOverflow問題:

Silverlight: Creating a round button template

的基本步驟是

  1. 創建你的按鈕新ControlTemplate呈現一個圓,使用Ellipse例如。
  2. 如果您希望Buttton.Background設置填充顏色,請將TemplateBinding用於Ellipse.Fill屬性。

例如:

<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> 
+0

科林如果我有例如在我的viewmodel屬性的顏色,我如何連接在這個代碼中的屬性,所以我可以用該綁定填充顏色?謝謝! – awe

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> 

享受;)