我刚开始使用Silverlight(2 RC0),似乎无法实现以下功能。我想创建一个简单的图像按钮用户控件。
我的用户控件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这样的容器中:假设我们已经有一个名为"image"的图像:
ImageButtonUserControl imageButton = new ImageButtonUserControl();
imageButton.Source = image;
this.thumbnailStackPanel.Children.Add(imageButton);
我需要做什么才能显示图像?我假设我需要对DataContext做些什么,但我不太确定是什么或在哪里。
感谢您的帮助
只需模板化一个普通的按钮,就可以轻松地获得ImageButton,因此根本不需要UserControl。假设Button.Content将是ImageSource。按钮的控制模板为:
<ControlTemplate x:Key="btn_template">
<Image Source="{TemplateBinding Content}" />
</ControlTemplate>
以及作为以URL集合作为其ItemsSource的ItemsControl的用法,您可以将WrapPanel添加为ItemPanel。如果未指定StackPanel,则默认为StackPanel。
<DataTemplate x:Key="dataTemplate">
<Button Template="{StaticResource btn_template}" Content="{Binding}"/>
</DataTemplate>
<ItemsControl ItemsSource="{Binding UrlCollection}" ItemsTemplate="{StaticResource dataTemplate}"/>
我相信这会有所帮助。它为我做了!
http://www.nikhilk.net/Silverlight-Effects-In-Depth.aspx
使用ImageSource代替Image。例如类型(ImageSource)等。