我有一个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
。
答案 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]
使用另一个索引