TextBoxのTextプロパティは、入力内容に変更が無い場合はTextプロパティの値をBinding先のソースに値を設定しなおしません。この挙動をカスタマイズするためのTriggerActionの実装例と使用サンプルです。

C#
namespace PrismMVVMSample.Behaviors 
{ 
    using System.Windows.Controls; 
    using System.Windows.Data; 
    using System.Windows.Interactivity; 
 
    /// <summary> 
    /// TextBoxのTextPropertyへBindingしてるSourceへ値をUpdateするアクション 
    /// </summary> 
    public class TextBoxUpdateSourceAction : TriggerAction<TextBox> 
    { 
        /// <summary> 
        /// TextPropertyへのBinding 
        /// </summary> 
        private BindingExpression bindingExpression; 
 
        protected override void OnAttached() 
        { 
            base.OnAttached(); 
            // TextPropertyへのBindingを取得 
            this.bindingExpression = this.AssociatedObject.GetBindingExpression( 
                TextBox.TextProperty); 
        } 
 
        protected override void OnDetaching() 
        { 
            this.bindingExpression = null; 
            base.OnDetaching(); 
        } 
 
        protected override void Invoke(object parameter) 
        { 
            // BindingされてたらSourceの値を更新 
            if (this.bindingExpression == null) 
            { 
                return; 
            } 
 
            this.bindingExpression.UpdateSource(); 
        } 
    } 
} 
 
 
 

EventTriggerと組み合わせて以下のように使用します。

XML
<TextBox x:Name="textBox" Margin="68,8,0,0" TextWrapping="Wrap" Text="{Binding Input, Mode=TwoWay, NotifyOnValidationError=True, UpdateSourceTrigger=Default}" VerticalAlignment="Top" TabIndex="0" HorizontalAlignment="Left" Width="236"    <i:Interaction.Triggers        <!-- LostFocus時にBindingをUpdateする --> 
        <i:EventTrigger EventName="LostFocus"            <PrismMVVMSample_Behaviors:TextBoxUpdateSourceAction/> 
        </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox>