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]
我有一个 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]