2015-02-04 9 views
0

ListView가 있고 ListView의 한 열에 Slider, TextBox 및 Button이 있습니다. Slider는 내 ViewModel의 Property (double 유형)에 바인딩됩니다. 슬라이더를 움직이면 TextBox의 값이 자동으로 업데이트됩니다. 그러나, 내 버튼은 아직 작동하지 않습니다. 클릭 할 때마다 값이 증가합니다. 누구든지 XAML에서이 기능을 추가하는 방법을 알고 있습니까?XAML의 Slider와 TextBox에 Button을 바인딩하는 방법

<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을 사용해야합니다. 방금 ToggleButtonButton으로 변경했습니다.

+0

토글 버튼 기능에 대해 명확하지 않습니다. 매번 클릭 할 때 슬라이더 값을 증가시켜야한다고 말하는 것입니까? –

+0

그래, 그게 내가 원하는거야. 그리고 슬라이더의 끝에 도달하면 (value_ [i] = maximum), 처음부터 시작해야합니다 (value_ [i + 1] = minimum) – berti

답변

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]

+0

답장을 보내 주셔서 감사합니다! 그것은 작동합니다. 그러나 문제는 토글 버튼을 한 번 클릭 한 후에 슬라이더를 더 이상 변경할 수 없다는 것입니다. – berti

+0

스토리 보드에서 변경된 속성의 차단을 해제하는 유일한 방법은 코드 숨김을 사용하는 것입니다. 이는 코드 케이스를 이해하는 데 큰 도움이되지 않습니다. –

+0

스토리 보드의 대안이 없습니까? – berti