2008-10-14 55 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