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 等。
沒有留言:
張貼留言