我正在编写一个WPF应用程序,我有一个滑块绑定到文本框,反之亦然。
我的问题是,当更改文本框的值时,我必须在更新滑块的值之前单击文本框。
我希望滑块值随着用户在文本框中键入文本或用户在文本框中按Enter键而更改。
继承我的代码:
XAML:
<Slider Name="sldrConstructionCoreSupplierResin" Minimum="0" Maximum="10" Grid.Column="1" Grid.Row="1" IsSnapToTickEnabled="True"/>
<TextBox Name="txtConstructionCoreSupplierResin" Text="{Binding ElementName=sldrConstructionCoreSupplierResin, Path=Value, Converter={StaticResource RoundingConverter}}" Grid.Column="2" Grid.Row="1"/>
代码背后:
public class RoundingConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
double dblValue = (double)value;
return (int)dblValue;
}
return 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
int ret = int.Parse(value.ToString());
return ret;
}
return 0;
}
}
答案 0 :(得分:4)
默认情况下,当控件失去焦点时,会更新绑定。这就是为什么当你单击TextBox时你只看到了变化。您可以使用Binding的UpdateSourceTrigger属性更改此设置,如下所示:
<TextBox Text="{Binding Value,ElementName=mySlider,UpdateSourceTrigger=PropertyChanged}" />
现在TextBox会在Text属性更改时更新其源,而不是在它失去焦点时。
答案 1 :(得分:1)