如何处理画布内的按钮单击

时间:2015-04-07 06:31:53

标签: c# wpf

我有以下WPF代码:

Grid Width="260" Height="170">
    <Border Margin="5" MouseEnter="UIElement_OnMouseEnter">
        <Border.Background>
            <VisualBrush>
                <VisualBrush.Visual>
                    <Canvas Background="{x:Null}" IsHitTestVisible="True">
                      <Rectangle Canvas.Left="20" Canvas.Top="20" Width="200" Height="50" Fill="Tan"/>

                        <Button
        x:Name="ToggleButton"
        Width="30"
        Height="30"
        Canvas.Top="10" 
                            IsHitTestVisible="True"
                            PreviewMouseDown="ToggleButton_OnPreviewMouseDown"
        Canvas.Left="10"
        />

                    </Canvas>
                </VisualBrush.Visual>
            </VisualBrush>
        </Border.Background>
        <Border.Effect>
            <DropShadowEffect Color="Black" Direction="225"/>
        </Border.Effect>
    </Border>
</Grid>

问题是无法点击该按钮。有谁知道这个问题的解决方案/解决方法?我也试过透明背景画布而不是null。

谢谢, 卢西恩

1 个答案:

答案 0 :(得分:0)

<Button x:Name="ToggleButton" 
        Width="30" Height="30"
        Canvas.Top="10" Canvas.Left="10"
        IsHitTestVisible="True"
        PreviewMouseDown="ToggleButton_OnPreviewMouseDown"
        Click="ButtonToggleButton_Click"
        />

注意'Click =“ButtonToggleButton_Click”'

您的C#代码将是:

private void ButtonToggleButton_Click(object sender, RoutedEventArgs e)
{
    //Do Actions here
}

编辑:我只是把它放在VS中并注意到'无法点击'的意思 - 您的按钮被绘制为VisualBrush方法的一部分。

如果你从那个外面移动你的按钮声明,那就是

 <Border Margin="5" MouseEnter="UIElement_OnMouseEnter">
      <Button
       x:Name="ToggleButton"
       Width="30" Height="30"
       IsHitTestVisible="True"
       Click="ButtonToggleButton_Click"
       HorizontalAlignment="Left"
       VerticalAlignment="Top"
       Margin="10,10,0,0"
    />
    <Border.Background>
        <VisualBrush>
            <VisualBrush.Visual>
                <Canvas Background="{x:Null}" IsHitTestVisible="True">
                  <Rectangle Canvas.Left="20" Canvas.Top="20" Width="200" Height="50" Fill="Tan"/>

                </Canvas>
            </VisualBrush.Visual>
        </VisualBrush>
    </Border.Background>
    <Border.Effect>
        <DropShadowEffect Color="Black" Direction="225"/>
    </Border.Effect>
</Border>

您将在画布的左上角找到一个正常运行的按钮,从那里您可以单独设置按钮。