我的XAML中有以下样式:
<Style x:Key="NumberButton" TargetType="Button">
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Label Content="{Binding}" FontSize="20" FontFamily="Consolas"/>
</DataTemplate>
</Setter.Value>
</Setter>
<EventSetter Event="Click" Handler="OnClicked"/>
</Style>
我创建了10个<Button>
,并将此样式应用于每个样式。每个按钮的Content=""
设置为0-9。我想为每个按钮(通过样式本身)创建一个事件处理程序,它将Content
属性的值传递给后面代码中的事件处理程序。
我还是WPF的新手所以非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
试试这个
<Style x:Key="NumberButton" TargetType="Button">
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="Auto"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="Tag" Value="{Binding}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Label Content="{Binding}" FontSize="20" FontFamily="Consolas"/>
</DataTemplate>
</Setter.Value>
</Setter>
<EventSetter Event="Click" Handler="OnClicked"/>
</Style>
然后在代码背后
void OnClicked(object sender, RoutedEventArgs e)
{
var button = sender as Button;
var content= button.Tag; // this is the value you want
}
答案 1 :(得分:1)
您可以从发件人按钮获取Content
:
void OnClicked(object sender, RoutedEventArgs e)
{
string content = ((Button)sender).Content.ToString();
}
从内容类型为对象的内容上调用ToString()
。