HOW TO:TextBox 文字更新來源時控制
更新:2007 年 11 月
本主題說明如何使用 UpdateSourceTrigger 屬性,控制繫結來源的更新時機。本主題使用 TextBox 控制項做為範例。
範例
TextBox.Text 屬性具有 LostFocus 的預設 UpdateSourceTrigger 值。這表示如果應用程式具有的 TextBox 含有資料繫結 TextBox.Text 屬性,則在 TextBox 失去焦點 (例如,當您按一下 TextBox 以外的其他位置) 前,您鍵入 TextBox 中的文字並不會更新來源。
如果您想要在鍵入文字時更新來源,請將繫結的 UpdateSourceTrigger 設定為 PropertyChanged。在下列範例中,TextBox 和 TextBlock 的 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 屬性會處理來源更新,因此僅與 TwoWay 或 OneWay 繫結相關。為了讓 TwoWay 和 OneWay 繫結得以生效,來源物件必須提供屬性變更告知。如需詳細資訊,請參考本主題中引用的範例。此外,您還可以參閱 HOW TO:實作屬性變更通知。 |