共用方式為


HOW TO:TextBox 文字更新來源時控制

更新:2007 年 11 月

本主題說明如何使用 UpdateSourceTrigger 屬性,控制繫結來源的更新時機。本主題使用 TextBox 控制項做為範例。

範例

TextBox.Text 屬性具有 LostFocus 的預設 UpdateSourceTrigger 值。這表示如果應用程式具有的 TextBox 含有資料繫結 TextBox.Text 屬性,則在 TextBox 失去焦點 (例如,當您按一下 TextBox 以外的其他位置) 前,您鍵入 TextBox 中的文字並不會更新來源。

如果您想要在鍵入文字時更新來源,請將繫結的 UpdateSourceTrigger 設定為 PropertyChanged。在下列範例中,TextBoxTextBlock 的 Text 屬性都會繫結至相同的來源屬性。TextBox 繫結的 UpdateSourceTrigger 屬性會設定為 PropertyChanged

<Label>Enter a Name:</Label>
<TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>

<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

因此,當使用者輸入文字到 TextBox 時,TextBlock 會顯示相同的文字 (因為來源變更了),如下列範例的螢幕擷取畫面所示:

簡單資料繫結範例螢幕擷取畫面

如需完整範例,請參閱簡單繫結範例

如果您有對話方塊或使用者可編輯的表單,而且想要將來源更新延到使用者完成欄位編輯並按一下 [確定] 後,您可以將繫結的 UpdateSourceTrigger 值設定為 Explicit,如下列範例所示:

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

如果您將 UpdateSourceTrigger 值設定為 Explicit,只有在應用程式呼叫 UpdateSource 方法時,才會變更來源值。下列範例顯示如何對 itemNameTextBox 呼叫 UpdateSource

Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();

如需完整範例,請參閱明確更新繫結來源範例

注意事項:

您可以對其他控制項的屬性使用相同的方法,但請記得其他大部分屬性都具有 PropertyChanged 的預設 UpdateSourceTrigger 值。如需詳細資訊,請參閱 UpdateSourceTrigger 屬性頁面。

注意事項:

UpdateSourceTrigger 屬性會處理來源更新,因此僅與 TwoWayOneWay 繫結相關。為了讓 TwoWayOneWay 繫結得以生效,來源物件必須提供屬性變更告知。如需詳細資訊,請參考本主題中引用的範例。此外,您還可以參閱 HOW TO:實作屬性變更通知

請參閱

其他資源

資料繫結範例

資料繫結 HOW TO 主題