设置Binding的UpdateSourceTrigger属性值为 PropertyChanged。

4. 示例:

<TextBox Text="{Binding ModelNameSearch, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="TextChanged">
            <i:InvokeCommandAction Command="{Binding TextChanged_ModelSearch}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>

注:控件的EventTrigger,用绑定的形式实现,需要:

(1)先安装Behavior的依赖库:Microsoft.Xaml.Behaviors.Wpf。

(2)引用 xmlns:i=" http://schemas.microsoft.com/xaml/behaviors "

(3)EventName 写事件触发事件,如上例“TextChanged” “ValueChanged” “LostFocus”...

(4)Command 写ViewModel中的RelayCommand,类似于Button的触发写法。

最近在做 WPF 项目,有一个需求是用户在 文本 框搜索的时候,弹出下拉框预测用户想输入的信息,一开始想用 TextBox 做,后来觉得写下拉框的UI太麻烦了,于是换了一种思路,改用ComboBox做,只要每次在 文本 改变时换一下他的ItemsSource即可。 一开始迟迟找 到ComboBox的 TextChanged 事件,用的是keyUp来做,每次keyUp时获取ComboBox中的 文本 内容,但是这样会有种种bug,后来用了 TextChanged 后完美解决。 TextBox Base.TextChang
UpdateSourceTrigger有三个枚举, 第一个是Explicit,源 会更新除非你手动来操作。正因为这个原因,我在这个 TextBox 旁边添加了一个按钮,用于手动更新源。在 后台 代码中,我们看到点击事件处理方法里面只有两行代码,第一行获取目标控件的绑定,第二行调用UpdateSource()方法。 第二是LostFocus,对于Text绑定来说其实就是一个默认 。也就是说一旦目标控件失去焦点,源就会被更新。 第三是PropertyChanged,一旦绑定的属性 改变,源会立即更新。本例中 文本
< TextBox Grid.Row="5" Grid.Column="3" Text="{Binding XXX}" Grid.ColumnSpan="2" Margin="42,0,89,1" Style="{StaticResource XXStyle}" Height="39" VerticalAlignment="Bottom" > <i:I...
问题描述:在某些输入场景下,如果输入框未输入 ,则设置确认或者保存按钮 可用。可是 TextBox 输入框是默认失去焦点后绑定的 才发生改变。 解决办法: 设置Binding的UpdateSourceTrigger属性 UpdateSourceTrigger=LostFocus //默认 ,失去焦点才绑定 UpdateSourceTrigger=PropertyChanged // 一发生改...
private void textBox _KeyDown(object sender, KeyEventArgs e) string strMessage = " textBox _KeyDown Event:" + e.RoutedEvent + " " + "Key:" + e.Key; if(listBox!=null)
MVVM中,VM实现 TextBox 为空时按钮 可操作,总是在失去焦点时才有反应, 实时 的,是因为 TextBox 的Text绑定默认UpdateSourceTrigger=LostFocus,改为UpdateSourceTrigger=PropertyChanged。 < TextBox x:Name="tbxSourceJson" Text="{Binding SourceJson,UpdateSourceTrigger=PropertyChanged}" TextWrapping="Wrap" A
WPF 中,要实现` TextBox `控件的 文本 随`Slider`控件 变化 而同步,通常可以使用数据绑定技术,特别是当两个控件都关联到同一个数据模型(比如 ViewModel )的时候。这里是一个简单的步骤: 1. 首先,在你的 ViewModel 中创建一个`double`类型的属性表示`Slider`的当前 ,例如`private double sliderValue;`,并提供一个公共的getter和setter。 ```csharp public double SliderValue get { return sliderValue; } sliderValue = value; OnPropertyChanged("SliderValue"); 2. 在`XAML`文件中,绑定` TextBox `的`Text`属性到`SliderValue`,同时给`Slider`设置双向数据绑定,使其 改变时能更新` TextBox `。 ```xml <Slider x:Name="mySlider" Value="{Binding SliderValue, UpdateSourceTrigger=PropertyChanged}" /> < TextBox Text="{Binding SliderValue, UpdateSourceTrigger=PropertyChanged}" /> 这里的`UpdateSourceTrigger=PropertyChanged`确保了当`Slider` 变化 时,会立即更新` TextBox `。 3. 如果你需要保证`Slider` 总是整数 ,可以在`SliderValueChanged`事件中做处理,例如添加检查并取整。 ```csharp private void MySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) if (e.NewValue != null) SliderValue = Math.Round(e.NewValue); 这样,` TextBox `的内容就会随着`Slider`的 变化 变化 ,而且只有整数 会被显示。