2014-04-23 2 views
0

캔버스 가시성을 표시에서 숨김으로 토글해야합니다. 캔버스의 visibility = "hidden"을 수동으로 변경하고 프로그램을 실행하면 캔버스가 사라지고 버튼을 눌러 전환 할 수 있다고 생각합니다. 여기까지 내가 지금까지 가지고있는 것이있다. 어떤 도움을 주시면 감사하겠습니다.WPF 토글 버튼을 사용하여 캔버스 또는 캔버스 라인 가시성 전환

XAML

<Canvas Background="Transparent" Height="200" HorizontalAlignment="Left" Margin="169.5,132.5,0,0" Name="Canvas1" VerticalAlignment="Top" Width="200" Visibility="Visible"> 
     <Line X1="100" Y1="0" X2="100" Y2="75" Stroke="Red" StrokeThickness="0.95" /> 
     <!--Top long vertical line> /--> 
     <Line X1="100" Y1="95" X2="100" Y2="105" Stroke="Red" StrokeThickness="0.95" /> 
     <!--Crosshair vertical line> /--> 
     <Line X1="100" Y1="125" X2="100" Y2="200" Stroke="Red" StrokeThickness="0.95" /> 
     <!--Bottom long vertical line> /--> 
     <Line X1="0" Y1="100" X2="75" Y2="100" Stroke="Red" StrokeThickness="0.75" /> 
     <!--Left long horizontal line> /--> 
     <Line X1="95" Y1="100" X2="105" Y2="100" Stroke="Red" StrokeThickness="0.75" /> 
     <!--Crosshair horizontal line> /--> 
     <Line X1="125" Y1="100" X2="200" Y2="100" Stroke="Red" StrokeThickness="0.75" /> 
     <!--Right long horizontal line> /--> 
     <!--Ellipse 
    Canvas.Top="50" 
    Canvas.Left="50" 
    Height="100" 
    Width="100" 
    StrokeThickness="0.75" 
    Stroke="Red"/--> 
    </Canvas> 
    <Canvas Height="73" HorizontalAlignment="Right" Name="Canvas2" VerticalAlignment="Top" Width="69"> 
     <Image Height="56" Name="Image1" Stretch="Fill" Width="48" Canvas.Left="7" Canvas.Top="8" Source="/HornetView;component/Images/imageedit_6_2746796678.png" /> 
    </Canvas> 
</Grid> 
</Window> 

VB

Public Sub Button1_Checked_1(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Checked 
    Dim chkstat As Integer 
    chkstat = 0 
    If Button1.IsChecked = True And chkstat = 0 Then 
     Canvas1.Visibility = Windows.Visibility.Visible 
     chkstat = 1 
    Else 
     Canvas1.Visibility = Windows.Visibility.Hidden 
    End If 

End Sub 
+0

뒤에 코드에서 개인 객체를 사용하여 위의 솔루션을

이동은 Canvas1.Visibility = Visibility.Hidden 시도있다; ? – metacircle

+0

토글 버튼의 ​​VB 부분을 추가했는데 어떤 이유로 'IsChecked = False 함수가 작동하지 않을 수 있습니다. If ~ IsChecked = True로 작업 할 수 있습니다. 그래서 나는 그것을 그 것으로 바꾸었고, 그것도 작동하지 않습니다. – cheapkid1

답변

4

사용 BooleanToVisibilityConverter 및 Canvas.VisibilityToggleButton.IsChecked을 결합한다.

<Window.Resources> 
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
</Window.Resources> 

... 

<Canvas Name="Canvas1" Visibility="{Binding IsChecked, ElementName=Button1, Converter={StaticResource BooleanToVisibilityConverter}}"> 
    ... 
</Canvas> 
+0

고마워요, 그건 훌륭하게 작동합니다. 나는 분명히 에 익숙하지 않다. 이해하기 위해 이것을 연구해야 할 것이다. 도와 주셔서 감사합니다. 건배! – cheapkid1

1

togglebuttonbutton 확인 방법 다른 곳에 클래스가 아니라 당신의 checkstat을 정의합니다. 귀하의 코드에서 'o; togglebuttonbutton이 점검 될 때마다 checkstat를 수행하여 절대로 'else'부분에 들어 가지 않도록하십시오. booltovisibility 변환기를 사용하고이 문제를 해결해야보다는

+0

도움 주셔서 감사합니다. 고전적인 얼굴 속에서 잠시. 귀하의 도움과 제안에 감사드립니다. – cheapkid1