2008-10-14 63 views
6

我刚开始使用Silverlight(2 RC0),似乎无法得到以下工作。我想创建一个简单的图像按钮用户控件。Silverlight ImageButton UserControl

我的用户控件的XAML如下:

<Button> 
     <Button.Template> 
      <ControlTemplate> 
       <Image Source="{TemplateBinding ImageSource}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" /> 
      </ControlTemplate> 
     </Button.Template> 
    </Button> 

后面的代码如下:

public partial class ImageButtonUserControl : UserControl 
    { 
     public ImageButtonUserControl() 
     { 
      InitializeComponent(); 
     } 

     public Image Source 
     { 
      get { return base.GetValue(SourceProperty) as Image; } 
      set { base.SetValue(SourceProperty, value); } 
     } 
     public static readonly DependencyProperty SourceProperty = 
      DependencyProperty.Register("SourceProperty", typeof(Image), typeof(ImageButtonUserControl),null); 
    } 

我希望能够动态创建ImageButtons,并在他们的东西像一个WrapPanel容器: 假设我们已经有一个名为“图像”的图像:

ImageButtonUserControl imageButton = new ImageButtonUserControl(); 
imageButton.Source = image; 
this.thumbnailStackPanel.Children.Add(imageButton); 

我需要做什么才能让图像显示?我假设我需要用DataContext做些事情,但我不太确定在哪里或在哪里。

感谢所有帮助

回答

10

您可以只用所以你不要要求用户控件的所有模板化一个普通按钮得到的ImageButton容易。假设Button.Content将是ImageSource。按钮的控件模板将是:

<ControlTemplate x:Key="btn_template">   
    <Image Source="{TemplateBinding Content}" /> 
</ControlTemplate> 

和使用作为一个ItemsControl与URL集合作为其ItemsSource时,您可以添加WrapPanel为ItemPanel。如果您没有指定默认值,则默认为StackPanel。

<DataTemplate x:Key="dataTemplate"> 
    <Button Template="{StaticResource btn_template}" Content="{Binding}"/> 
</DataTemplate>  


<ItemsControl ItemsSource="{Binding UrlCollection}" ItemsTemplate="{StaticResource dataTemplate}"/> 
+0

谢谢,这是我已经修复了一个错字....依然似乎不起作用。 – ckarbass 2008-10-14 04:32:01