2010年7月29日 星期四

WPF 學習:Binding

WPF 除了 Declaration Programming 外,還有一個最強的功能就屬於 Binding 了。

假設現在有個需求,有一個 Button 與 TextBox。TextBox 所輸入的文字必須即時地設定為 Button 的 Text。

Window Form

如果以 WinForm 來實作的話,就必須以 Event Handler 的方式來處理。程式碼如下.

private void textBox1_TextChanged(object sender, EventArgs e)
{
    button1.Text = textBox1.Text;
}
好處是相當簡易清楚。但想一想,程式中充滿了這類的 Event Handler 也是相當雜亂的事。

WPF

WPF 則是使用 Binding 的技術來克服這樣的需求,不必一項項的以 Event Handler 來實作。

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
  <Button    Content="{Binding ElementName=HelloTextBox, Path=Text}" Height="100" Margin="0,12,0,198" />
  <Button    Height="100" Margin="0,128,0,83" >
    <Button.Content>
    <Binding ElementName="HelloTextBox" Path="Text" />
    </Button.Content>
  </Button>
  <TextBox Text="Hello" Name="HelloTextBox" Margin="0,234,374,49" />
</Grid>
</Window>

第一個 Button ,其 Content 說明了其資料來源的Element 為 HelloTextBox,讀取路徑(Path)為Text。

第二個 Button 則使用了另一種相等的寫法,更清楚但語法稍嫌太長。

結論

這兩種WPF 的方法使用了 Binding(繫結),簡單地以宣告的方式取代了 Event Handling。更棒的是,這類的 Binding 可以使用到非常多的屬性,如Style, Icon 等。

沒有留言:

Share with Facebook