Binding チートシート

こんばんは、siokoshou です。子供のころ、子供向け教育番組の「テレビの前のよい子のお友達」ってのが誰のことかわかりませんでしたw そういうお約束は小さい子供には難しいと思いますです。

さて、WPF の Binding チートシートのご紹介。バインディングは奥深いし、文法もごちゃごちゃしててややこしいですよね。MSDN ライブラリでドキュメントを見ても、能書きが多くてイマイチです。それはそれで必要なんだけど、それだけじゃなくて、パッと一覧できる実用的なサンプルもたくさん載せるべきだと思います。
で、それに近いものを作っちゃった人がいて Lester's WPF blog で紹介されてたので、リンク張っときます。PDF です。3/11まではちょっと怖いけど(^^;

ひじょーーに便利!

DropShadowEffect 実験機


DropShadowEffect のプロパティをリアルタイムにいじって試すコードです。手抜きだけど十分実用的。
WPF

<Window x:Class="Effects.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <UniformGrid Rows="2">
        <UniformGrid Columns="2">
            <Label>BlurRadius</Label>
            <TextBox Name="BlurRadius">5</TextBox>

            <Label>Direction</Label>
            <TextBox Name="Direction">315</TextBox>

            <Label>Opacity</Label>
            <TextBox Name="Opacity">1</TextBox>

            <Label>ShadowDepth</Label>
            <TextBox Name="ShadowDepth">5</TextBox>

            <Button Click="Button_Click">Reset</Button>
        </UniformGrid>        

        <Rectangle Width="50" Height="50" Fill="LightSteelBlue">
            <Rectangle.Effect>
                <DropShadowEffect BlurRadius="{Binding ElementName=BlurRadius, Path=Text}"
                                  Direction="{Binding ElementName=Direction, Path=Text}"
                                  Opacity="{Binding ElementName=Opacity, Path=Text}"
                                  ShadowDepth="{Binding ElementName=ShadowDepth, Path=Text}"
                                  />
            </Rectangle.Effect>
        </Rectangle>
    </UniformGrid>
</Window>

C#

using System.Windows;

namespace Effects
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Button_Click( object sender, RoutedEventArgs e )
        {
            this.BlurRadius.Text = "5";
            this.Direction.Text = "315";
            this.Opacity.Text = "1";
            this.ShadowDepth.Text = "5";
        }
    }
}