繁体   English   中英

根据文本框动态更新WPF滑块

[英]Update WPF Slider dynamically based on textbox

我正在编写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;
        }
    } 

默认情况下,当控件失去焦点时,绑定将更新。 这就是为什么当您从TextBox中单击时才看到更改。 您可以使用Binding的UpdateSourceTrigger属性更改此设置,如下所示:

<TextBox Text="{Binding Value,ElementName=mySlider,UpdateSourceTrigger=PropertyChanged}" />

现在,只要Text属性发生更改,而不是失去焦点时,TextBox就会更新其源代码。

BindingUpdateSourceTrigger属性设置为PropertyChanged

<TextBox Text="{Binding ElementName=sldrConstructionCoreSupplierResin, Path=Value, UpdateSourceTrigger = "PropertyChanged" Converter={StaticResource RoundingConverter}}"/>

在这里查看更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM