C# 通过拖动滑块并单击具有不同触发器的按钮来更改滑块的值

C# 通过拖动滑块并单击具有不同触发器的按钮来更改滑块的值,c#,wpf,slider,C#,Wpf,Slider,我有三个控件:一个滑块、一个按钮和一个文本框。 我想实现的是,当我拖动滑块改变它的值时,textbox的内容会改变。textbox的内容就是滑块的值。但是,当我单击按钮时,滑块的值加1,但textbox的内容不变。textbox显示滑块的值。但只有当我通过拖动滑块更改滑块的值时,才会更改其内容。 那么,我如何在代码中实现这一点呢 使用元素名将textbox文本属性绑定到滑块的VALUE属性 <Slider x:Name="Slider"></Slider> <T

我有三个控件:一个滑块、一个按钮和一个文本框。 我想实现的是,当我拖动滑块改变它的值时,textbox的内容会改变。textbox的内容就是滑块的值。但是,当我单击按钮时,滑块的值加1,但textbox的内容不变。textbox显示滑块的值。但只有当我通过拖动滑块更改滑块的值时,才会更改其内容。 那么,我如何在代码中实现这一点呢


使用元素名将textbox文本属性绑定到滑块的VALUE属性

 <Slider x:Name="Slider"></Slider>
 <TextBox x:Name="SliderValue" Text="{Binding ElementName=Slider, Path=Value}"></TextBox>

滑块值更改时,文本框将自动更新。

是我找到解决方案的地方

我的代码是: 在Xaml中:


代码:

private bool isdragging = false;

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        mySlider.Value += 1;
    }

    private void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (isdragging)
            tboxValue.Text = mySlider.Value.ToString();
    }

    private void mySlider_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
    {
        isdragging = true;
    }

    private void mySlider_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
    {
        isdragging = false;
    }
private bool isdragging=false;
私有无效btnAdd_单击(对象发送者,路由目标e)
{
mySlider.Value+=1;
}
私有void mySlider_值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
if(ISDRAGING)
tboxValue.Text=mySlider.Value.ToString();
}
私有void mySlider_DragStarted(对象发送方,System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
IsDraging=true;
}
私有void mySlider_DragCompleted(对象发送方,System.Windows.Controls.Primitives.dragcompletedventargs e)
{
IsDraging=错误;
}

它非常适合我。

当我单击“添加”按钮时,slider的值加1,但textbox的内容无法更改。
private bool isdragging = false;

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        mySlider.Value += 1;
    }

    private void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (isdragging)
            tboxValue.Text = mySlider.Value.ToString();
    }

    private void mySlider_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
    {
        isdragging = true;
    }

    private void mySlider_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
    {
        isdragging = false;
    }