【问题标题】:WPF toggle canvas or canvas line visibility with a toggle buttonWPF 使用切换按钮切换画布或画布行可见性
【发布时间】:2014-06-08 07:54:51
【问题描述】:

我需要将画布可见性从可见切换为隐藏。如果我可以手动更改画布的可见性 =“隐藏”并运行程序并且画布消失了,那么我想我可以用一个按钮来切换它。这是我到目前为止所拥有的。任何帮助,将不胜感激。

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

【问题讨论】:

  • 你试过 Canvas1.Visibility = Visibility.Hidden; ?
  • 我为 Toggle 按钮添加了 VB 部分,由于某种原因,我无法让 'IsChecked = False 函数工作,我只能让 If ~IsChecked = True 工作。所以我改成那个了,还是不行。

标签: wpf canvas toggle visibility


【解决方案1】:

使用 BooleanToVisibilityConverter 并将 ToggleButton.IsChecked 绑定到 Canvas.Visibility。

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

...

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

【讨论】:

  • 谢谢,效果很好。我不熟悉,显然 ,我必须研究一下才能理解。我感谢您的帮助。干杯!
【解决方案2】:

在类中的其他位置而不是在 togglebuttonbutton 检查方法中定义您的 checkstat。在您的代码中,您分配的值为 'o;每次检查切换按钮按钮时检查状态,以便它永远不会进入“其他”部分。

通过使用 booltovisibility 转换器来使用上述解决方案,这应该可以解决您的问题,而不是在您的代码中使用私有对象

【讨论】:

  • 感谢您的帮助。经典的面对面的时刻,已经有一段时间了。感谢您的帮助和建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2013-05-13
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多