如何将Button绑定到XAML中的Slider和TextBox

时间:2015-02-04 15:04:37

标签: c# wpf slider togglebutton

我有一个ListView,ListView的一列包括Slider,TextBox和Button。 Slider绑定到ViewModel中的Property(类型为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>

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

1 个答案:

答案 0 :(得分:1)

您可以使用按钮'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]使用另一个索引