Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用自定义参数设置触发器的样式_C#_.net_Wpf_.net 4.5 - Fatal编程技术网

C# 使用自定义参数设置触发器的样式

C# 使用自定义参数设置触发器的样式,c#,.net,wpf,.net-4.5,C#,.net,Wpf,.net 4.5,我的XAML中有以下样式: <Style x:Key="NumberButton" TargetType="Button"> <Setter Property="Width" Value="Auto"/> <Setter Property="Height" Value="Auto"/> <Setter Property="Margin" Value="2"/> <Setter Property="Content

我的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个
,并将此样式应用于每一个。每个按钮的
Content=”“
设置为数字0-9。我想为每个按钮创建一个事件处理程序(通过样式本身),它将
Content
属性的值传递给代码隐藏中的事件处理程序

我还是WPF的新手,所以非常感谢您的帮助。谢谢大家!

试试这个

<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)
{
    string content = ((Button)sender).Content.ToString();
}

调用内容上的
ToString()
,因为它属于对象类型。

将事件处理程序中的事件发送器强制转换为按钮并读取内容可能会起作用,不是吗?请看:这很简单,不需要使XAML过于复杂!谢谢很高兴帮助罗伯特。:)
void OnClicked(object sender, RoutedEventArgs e)
{
    string content = ((Button)sender).Content.ToString();
}