ViewMakerで生成するWPF/Silverlightコントロール(9)Button編

今回はButtonです。自動生成ではボタンは画面下部にまとめて並べられます。

Buttonコントロール

WPF/Silverlightいずれも標準でふくまれていて、ICommand型にバインドします。
ViewMakerで指定可能なButtonの項目は以下の通りです。

    1. ImageSource(イメージのソース)

WPFサンプルイメージとXAMLコード

<Button Name="Button1" Command="{Binding Path=Button1,Mode=OneWay}" Margin="5">Button1</Button>

<Button Name="Button2" Command="{Binding Path=Button2,Mode=OneWay}" Margin="5">
 <Image Source="{StaticResource ButtonImage}" />
</Button>

<Button Name="Button3" Command="{Binding Path=Button3,Mode=OneWay}" Width="200" 
	Foreground="Blue" Background="Azure" HorizontalAlignment="Left" Margin="5">Button3</Button>

SilverlightサンプルイメージとXAMLコード

<Button Name="Button1" Command="{Binding Path=Button1,Mode=OneWay}" Margin="5">Button1</Button>
      
<Button Name="Button2" Command="{Binding Path=Button2,Mode=OneWay}" Margin="5">
  <Image Source="{StaticResource ButtonImage}" />        
</Button>

<Button Name="Button3" Command="{Binding Path=Button3,Mode=OneWay}" Width="200" 
	Foreground="Blue" Background="Azure" HorizontalAlignment="Left" Margin="5">Button3</Button>

ViewModelコード

[View(ViewControlType.StackPanel)]
[ViewProperty(StackPanelViewControl.Properties.HeaderPosition, LayoutHeaderPosition.Hidden)]
public class ButtonSample : ViewModel
{
    [View(ViewControlType.Button)]
    public ICommand Button1 { get { return CreateCommand(() => this.ShowMessage("Button1")); } }

    [View(ViewControlType.Button)]
#if !SILVERLIGHT
    [ViewProperty(ButtonViewControl.Properties.ImageSource, 
        "/ViewMaker.SampleApplication;component/ButtonImage.png")]
#else
    [ViewProperty(ButtonViewControl.Properties.ImageSource, 
        "/SilverlightViewMaker.SampleApplication;component/ButtonImage.png")]
#endif
    public ICommand Button2 { get { return CreateCommand(() => this.ShowMessage("Button2")); } }

    [View(ViewControlType.Button)]
    [ViewProperty(ButtonViewControl.Properties.Width, 200)]
    [ViewProperty(ButtonViewControl.Properties.Foreground, "Blue")]
    [ViewProperty(ButtonViewControl.Properties.Background, "Azure")]
    public ICommand Button3 { get { return CreateCommand(() => this.ShowMessage("Button3")); } }
}

イメージの指定方法(改訂)

仕様自体を見直しました。StaticResourceに限定せず、ImageタグのSource属性の値を直接指定できるようにしました。より低レベルにすることで柔軟性を確保しました。