XAML 如何将 Button 绑定到 Slider 和 TextBox

How to bind a Button to a Slider and a TextBox in XAML

我有一个 ListView,该 ListView 的一列包括一个滑块、一个文本框和一个按钮。 Slider 绑定到我的 ViewModel 中的 属性(double 类型)。当我移动滑块时,TextBox 中的值会自动更新。但是,我的 Button 还不起作用。它应该在每次单击时增加该值。有谁知道如何在 XAML.

中添加此功能
<GridViewColumn Width="345">
    <GridViewColumnHeader Content="Wert" Command="{Binding SortCommand}" CommandParameter="Value" />
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <DockPanel VerticalAlignment="Center" Margin="10">
                <Slider Name="slValue" Value="{Binding Value, Mode=TwoWay}" Minimum="{Binding MinValue}" Maximum="{Binding MaxValue}" TickPlacement="BottomRight" TickFrequency="{Binding StepSize}" Width="205" />
                <TextBox Text="{Binding ElementName=slValue, Path=Value, UpdateSourceTrigger=PropertyChanged}" DockPanel.Dock="Right" TextAlignment="Right" Width="40" />
                <Button Name="IncrementValue" Width="40" Height="40" />
            </DockPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

编辑: 实际上,我需要使用普通按钮,而不是 ToggleButton。我刚刚将 ToggleButton 更改为 Button

您可以使用按钮的 EventTrigger 来更改滑块的值,文本框将自动更新。

 <ToggleButton Name="Toggle" Width="40" Height="40" >
            <ToggleButton.Triggers>
                <EventTrigger RoutedEvent="ToggleButton.Click" >
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation By="1" Duration="00:00:00" Storyboard.TargetName="slValue" Storyboard.TargetProperty="Value"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </ToggleButton.Triggers>
        </ToggleButton>

您可以处理按钮的点击事件并修改按钮的兄弟滑块的值:

 private void IncrementValue_Click(object sender, RoutedEventArgs e)
    {
        ((((Button)sender).Parent as DockPanel).Children[0] as Slider).Value++;
    }

这里我假设滑块是停靠面板的第一个元素,如果你改变它的位置你应该使用另一个索引 Children[0]