C# 事件处理程序&x2B;格式化多个按钮-WPF
实际上,我有两个问题要解决,并在我的wpf应用程序中结合在一起 我有多个具有特定布局的按钮C# 事件处理程序&x2B;格式化多个按钮-WPF,c#,wpf,event-handling,stackpanel,C#,Wpf,Event Handling,Stackpanel,实际上,我有两个问题要解决,并在我的wpf应用程序中结合在一起 我有多个具有特定布局的按钮 <Window.Resources> <Style x:Key="greenButton" TargetType="Button"> <Setter Property="Background" Value="LightGreen" /> <Setter Property="FontSize" Value="20"/>
<Window.Resources>
<Style x:Key="greenButton" TargetType="Button">
<Setter Property="Background" Value="LightGreen" />
<Setter Property="FontSize" Value="20"/>
<Setter Property="BorderThickness" Value="1"/>
</Style>
...
</Window.Resources>
嗯。但是我有这么多的按钮,所以我想用相同的点击事件处理程序将它们组合在一起。我试过这个:
<StackPanel Button.Click="button_Click" Grid.RowSpan="20">
<Button Grid.Column="0" Grid.Row="0" FontWeight="Bold" BorderBrush="Black" Style="{StaticResource greenButton}">LT 1</Button>
<Button x:Name="btn100" Grid.Column="0" Grid.Row="2" Style="{StaticResource greenButton}">100</Button>
<Button x:Name="btn101" Grid.Column="0" Grid.Row="3" Style="{StaticResource greenButton}">101</Button>
<Button x:Name="btn102" Grid.Column="0" Grid.Row="4" Style="{StaticResource greenButton}">102</Button>
</StackPanel>
现在我有两个问题:
我的解决方案没有基于这篇文章的副本,但是当您分配
按钮时,我在进一步(布局+传输变量)时遇到问题。单击处理程序到StackPanel,处理程序方法的sender参数不是按钮,因此(sender as Button)
返回null
您可以编写(例如,OriginalSource as Button)
,因为在您的样式中,通过事件设置器将单击处理程序分配给所有按钮可能更简单:
<Style x:Key="greenButton" TargetType="Button">
...
<EventSetter Event="Click" Handler="button_Click"/>
</Style>
...
当您分配按钮时。单击StackPanel中的处理程序,处理程序方法的sender参数不是按钮,因此(sender as Button)
返回null
您可以编写(例如,OriginalSource as Button)
,因为在您的样式中,通过事件设置器将单击处理程序分配给所有按钮可能更简单:
<Style x:Key="greenButton" TargetType="Button">
...
<EventSetter Event="Click" Handler="button_Click"/>
</Style>
...
我认为,在这种情况下,发送方是StackPanel。尝试使用:
string name = (e.OriginalSource as Button)?.Content.ToString();
我认为,发送方在本例中是StackPanel。尝试使用:
string name = (e.OriginalSource as Button)?.Content.ToString();
无重复的可能重复。我的解决方案是基于这篇文章的,但我在进一步(布局+传输变量)时遇到了问题。请注意,当然没有必要引入StackPanel(这显然会破坏您的布局)。您也可以指定按钮。单击网格上的
。可能重复但不重复。我的解决方案是基于这篇文章的,但我在进一步(布局+传输变量)时遇到了问题。请注意,当然没有必要引入StackPanel(这显然会破坏您的布局)。您也可以指定按钮。单击网格上的。我移除了stackpanel并实现了您的建议,现在。。。它的工作:)Thx洛蒂删除了stackpanel和实施您的建议,现在。。。它的工作:)Thx很多
string name = (e.OriginalSource as Button)?.Content.ToString();