C#WPF定义边距后无法点击按钮

时间:2016-10-08 08:22:35

标签: c# wpf

我使用以下代码在WPF应用程序中创建了一个按钮:

Button EditButton = new Button();
EditButton.Margin = new System.Windows.Thickness(Location[0], Location[1], 0, 0);
EditButton.Height = double.Parse("20");
EditButton.Width = double.Parse("20");
EditButton.Cursor = System.Windows.Input.Cursors.Hand;
EditButton.Content = "TEST!";
EditButton.Click += new System.Windows.RoutedEventHandler(Edit_Click);
Grid.Children.Add(EditButton);
Location[1] += 17;

当我没有定义EditButton.Margin时,按钮工作正常,但是一旦我定义它,我就无法点击它并且光标不会改变。我在互联网上搜索了一个答案,但似乎都没有。提前谢谢。

3 个答案:

答案 0 :(得分:0)

不确定'位置'在你的代码中,我假设'网格'是网格的名称。以下是有效的。

public MainWindow()
    {
        InitializeComponent();
        Button EditButton = new Button();
        EditButton.Margin = new System.Windows.Thickness(10, 10, 0, 0);
        EditButton.Height = double.Parse("20");
        EditButton.Width = double.Parse("20");
        EditButton.Cursor = System.Windows.Input.Cursors.Hand;
        EditButton.Content = "TEST!";
        EditButton.Click += new System.Windows.RoutedEventHandler(Edit_Click);
        Grid.Children.Add(EditButton);
      //  Location[1] += 17;
    }

private void Edit_Click(object sender, RoutedEventArgs e)
{
    throw new NotImplementedException();
}

XAML -

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid x:Name="Grid">

    </Grid>
</Window>

答案 1 :(得分:0)

如果你无法点击你创建的控件,那么它通常是由其他控件引起的。

我建议稍微修改你的代码并从那一点继续:

var stackPanel = new StackPanel();
var button = new Button();
button.Content = "Your Button";
button.Click += new System.Windows.RoutedEventHandler(Edit_Click);
stackpanel.Children.Add(button);

我建议使用StackPanel,因为它会自动排列您的控件,从而防止它重叠,您可以从这一点开始查看是否由网格或其他组件引起问题。

Button默认会延伸到其内容,因此StackPanel

答案 2 :(得分:0)

看起来您想以编程方式执行此操作,但如果您在XAML中定义它,则可以将按钮的Panel.ZIndex属性设置为某个较大的数字以将其置于前面:

<Button Content="TEST!" Panel.ZIndex="1000" Height="20" Width="20" Cursor="Hand" Click="Edit_Click" />

希望有人帮助......