6

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);
    }

ImageButton を動的に作成し、WrapPanel のようなコンテナーに詰め込みたいと考えています。「image」という名前の画像が既にあるとします。

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

画像を表示するにはどうすればよいですか? 私は DataContext で何かをする必要があると仮定していますが、何をどこで行うかはよくわかりません。

助けてくれてありがとう

4

2 に答える 2

10

通常のボタンをテンプレート化するだけで ImageButton を簡単に取得できるため、UserControl はまったく必要ありません。Button.Content が ImageSource になると仮定します。Button の ControlTemplate は次のようになります。

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

また、URL コレクションを ItemsSource として ItemsControl として使用する場合、WrapPanel を ItemPanel として追加できます。指定しない場合、デフォルトは StackPanel になります。

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


 <ItemsControl ItemsSource="{Binding UrlCollection}" ItemsTemplate="{StaticResource dataTemplate}"/>
于 2008-10-14T04:27:21.967 に答える
2

これが役立つと思います。それは私のためにやった!

http://www.nikhilk.net/Silverlight-Effects-In-Depth.aspx

Image の代わりに、ImageSource を使用します。EG typeof(ImageSource) など

于 2009-02-12T17:58:22.787 に答える