用户控件-Silverlight ImageButton UserControl



我刚开始使用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)等。

最新更新