天天看點

WPF程式設計指南第23章資料綁定第一個例子,我修改了下,更能直接看出效果和差別示例

WPF程式設計指南第23章資料綁定第一個例子,我修改了下,更能直接看出效果和差別示例
圖像1
WPF程式設計指南第23章資料綁定第一個例子,我修改了下,更能直接看出效果和差別示例

圖像2

修改後的代碼如下:

<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ScrollBar Name="scroll"

               Orientation="Horizontal" Margin="24"

               Maximum="100" LargeChange="10" SmallChange="1" Height="30" Width="200" />

    <Label Name="label" HorizontalAlignment="Center"

           Content="{Binding ElementName=scroll,Path=Value,Mode=TwoWay}"/>

    <ScrollBar Name="scroll2" Orientation="Horizontal" Margin="48"

               Maximum="100" LargeChange="10" SmallChange="5" Width="200"

               Value="{Binding ElementName=label,Path=Content,Mode=TwoWay}"/>

    <Label Name="label2" HorizontalAlignment="Center"

           Content="{Binding ElementName=scroll2,Path=Value,Mode=TwoWay}"/>

</StackPanel>

将此檔案儲存為字尾名為.xaml的檔案然後直接用浏覽器打開就可以了

兩個滾動條可以互相關聯,如果把lable1中的Mode=TwoWay改為Mode=OneWay就不行了

這個例子主要說明簡單的綁定和綁定模式的問題,新人能很直接的從這個例子中了解綁定的概念

還有一個奇怪的現象,如圖檔2所示,如果拿滑鼠拖動滾動的話,發現這個滾動條的精度非常的高

是一個浮點的值,這個還需要再确認下,理論上這個值應該是一個整形值的。

還請路過的高人指點。

下面從MSDN摘錄下綁定的Mode說明

成員名稱 說明
TwoWay 導緻對源屬性或目标屬性的更改可自動更新對方。此綁定類型适用于可編輯窗體或其他完全互動式 UI 方案。
OneWay 當綁定源(源)更改時,更新綁定目标(目标)屬性。如果要綁定的控件為隐式隻讀控件,則适用此綁定類型。例如,可以綁定到如股市代号之類的源。或者,可能目标屬性沒有用于進行更改(例如表的資料綁定背景色)的控件接口。如果不需要監視目标屬性的更改,則使用 OneWay 綁定模式可避免 TwoWay 綁定模式的系統開銷。
OneTime 當應用程式啟動或資料上下文更改時,更新綁定目标。此綁定類型适用于以下情況:使用目前狀态的快照适合使用的或資料狀态實際為靜态的資料。如果要從源屬性初始化具有某個值的目标屬性,并且事先不知道資料上下文,則也可以使用此綁定類型。實質上,這是 OneWay 綁定的較簡單的形式,它在不更改源值的情況下可提供更好的性能。
OneWayToSource 當目标屬性更改時更新源屬性。
Default 使用綁定目标的預設 Mode 值。每個依賴項屬性的預設值都不同。一般情況下,使用者可編輯控件屬性(例如文本框和複選框的屬性)預設為雙向綁定,而多數其他屬性預設為單向綁定。确定依賴項屬性綁定在預設情況下是單向還是雙向的程式設計方法是:使用 GetMetadata 來擷取屬性的屬性中繼資料,然後檢查 BindsTwoWayByDefault 屬性的布爾值。

示例

此示例示範如何指定綁定是僅更新綁定目标(目标)屬性或綁定源(源)屬性,還是同時更新目标屬性和源屬性。

使用 Mode 屬性指定綁定的方向。以下枚舉清單列出了可供綁定更新的選項:

  • 無論是目标屬性還是源屬性,隻要發生了更改,TwoWay 就會更新目标屬性或源屬性。
  • OneWay 僅當源屬性發生更改時更新目标屬性。
  • OneTime 僅當應用程式啟動時或 DataContext 進行更改時更新目标屬性。
  • OneWayToSource 在目标屬性更改時更新源屬性。
  • Default:使用目标屬性的預設 Mode 值。

有關更多資訊,請參見 BindingMode 枚舉。

下面的示例示範如何設定 Mode 屬性。有關完整示例,請參見 控制資料流方向和計時的示例 。

XAML 
WPF程式設計指南第23章資料綁定第一個例子,我修改了下,更能直接看出效果和差別示例
複制代碼
<TextBlock Name="IncomeText" Grid.Row="0" Grid.Column="1"
  Text="{Binding Path=TotalIncome, Mode=OneTime}"/>

      

若要檢測源更改(适用于 OneWay 和 TwoWay 綁定),則源必須實作一種合适的屬性更改通知機制(如 INotifyPropertyChanged )。有關 INotifyPropertyChanged 實作的示例,請參見 如何:實作屬性更改通知 。

對于 TwoWay 或 OneWayToSource 綁定,可以通過設定 UpdateSourceTrigger 屬性來控制源更新計時。有關更多資訊,請參見 UpdateSourceTrigger。

繼續閱讀