我有三个控件:滑块,按钮和文本框。 而我想要实现的是当我拖动滑块来改变它的值时,文本框的内容会发生变化。文本框的内容是滑块的值。但是,当我单击按钮时,滑块的值加1但是文本框的内容没有改变。文本框显示了Slider的值。但是只有当我通过拖动滑块来改变滑块的值时,它才会改变它的内容。 那么如何在代码中完成这项工作呢?
答案 0 :(得分:0)
使用元素名称
将文本框TEXT属性绑定到滑块的VALUE属性 <Slider x:Name="Slider"></Slider>
<TextBox x:Name="SliderValue" Text="{Binding ElementName=Slider, Path=Value}"></TextBox>
当滑块值更改时,文本框将自动更新。
答案 1 :(得分:0)
Here是我找到解决方案的地方。
我的代码是: 在Xaml:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Slider Name="mySlider" ValueChanged="mySlider_ValueChanged" Thumb.DragStarted ="mySlider_DragStarted"
Thumb.DragCompleted ="mySlider_DragCompleted"/>
<TextBox Name="tboxValue" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Text="0"
Grid.Row="1"/>
<Button Content="Add" Name="btnAdd" Click="btnAdd_Click" Grid.Row="2"/>
</Grid>
在代码中:
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;
}
它非常适合我。