如何为我的 XAML 按钮创建点击处理程序?
How to create a click handler for my XAML button?
我一直在尝试使用一个按钮来通过 windows 媒体播放器显示视频(它也会循环播放,但我已经解决了)。
我是 c# 的新手,所以到目前为止都是非常基本的代码。
我不确定如何将 xaml 中的按钮 link 添加到我的 C# 代码中。
这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Taillight_Project_3._1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class Button : System.Web.UI.WebControls.WebControl, System.Web.UI.IPostBackEventHandler,System.Web.UI.WebControls.IButtonControl {
}
}
xaml
<Window x:Class="Taillight_Project_3._1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Taillight_Project_3._1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
xmlns:gif ="https://github.com/XamlAnimatedGif/XamlAnimatedGif">
<Grid>
<TextBox HorizontalAlignment="Center" Margin="0,10,0,0" Text="Sequential Taillight Simulator 2021" TextWrapping="Wrap" VerticalAlignment="Top" Width="780" Height="50" FontFamily="Bahnschrift" FontSize="50" FontWeight="Normal" FontStyle="Normal" TextDecorations="{x:Null}"/>
<RadioButton x:Name="BrakeLights" HorizontalAlignment="Center" Width="100" Content="Brake Lights" Margin="0,396,0,22" AutomationProperties.Name="Brakelights"/>
<StackPanel Margin="0,65,0,43">
<MediaElement Name="Media1" >
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<MediaTimeline Source="C:\Users\n.a.smith\source\repos\Taillight Project 3.1\Taillight Project 3.1\files\Brake Lights Video.mp4" Storyboard.TargetName="myMediaElement" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
</StackPanel>
</Grid>
</Window>
如果您只想让一个按钮执行 UI 中的一个函数,您可以像在 XAML 中添加任何其他元素一样添加它:
...
<Button Content="My Button" ... />
...
如果你想让按钮在被点击时执行某事,那么你可以这样做:
<Button Content="My Button" Click="Button_Click" />
并在 MainWindow
的代码隐藏中,实现该方法:
...
private void Button_Click(object sender, RoutedEventArgs e)
{
// do something when clicked
}
...
我不会深入讨论命令或 MVVM 或任何其他内容,只是知道这不一定是大型项目的最佳设计模式。
然而,这部分让我对你的代码有点困惑:
public class Button : System.Web.UI.WebControls.WebControl, System.Web.UI.IPostBackEventHandler,System.Web.UI.WebControls.IButtonControl
您正在 Taillight_Project_3._1
命名空间中创建 class Button
,除了继承的内容外,没有任何功能或定义。我想这不会编译,因为你没有实现 IPostBackEventHandler
或 IButtonControl
接口。
我一直在尝试使用一个按钮来通过 windows 媒体播放器显示视频(它也会循环播放,但我已经解决了)。
我是 c# 的新手,所以到目前为止都是非常基本的代码。
我不确定如何将 xaml 中的按钮 link 添加到我的 C# 代码中。
这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Taillight_Project_3._1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class Button : System.Web.UI.WebControls.WebControl, System.Web.UI.IPostBackEventHandler,System.Web.UI.WebControls.IButtonControl {
}
}
xaml
<Window x:Class="Taillight_Project_3._1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Taillight_Project_3._1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
xmlns:gif ="https://github.com/XamlAnimatedGif/XamlAnimatedGif">
<Grid>
<TextBox HorizontalAlignment="Center" Margin="0,10,0,0" Text="Sequential Taillight Simulator 2021" TextWrapping="Wrap" VerticalAlignment="Top" Width="780" Height="50" FontFamily="Bahnschrift" FontSize="50" FontWeight="Normal" FontStyle="Normal" TextDecorations="{x:Null}"/>
<RadioButton x:Name="BrakeLights" HorizontalAlignment="Center" Width="100" Content="Brake Lights" Margin="0,396,0,22" AutomationProperties.Name="Brakelights"/>
<StackPanel Margin="0,65,0,43">
<MediaElement Name="Media1" >
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<MediaTimeline Source="C:\Users\n.a.smith\source\repos\Taillight Project 3.1\Taillight Project 3.1\files\Brake Lights Video.mp4" Storyboard.TargetName="myMediaElement" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
</StackPanel>
</Grid>
</Window>
如果您只想让一个按钮执行 UI 中的一个函数,您可以像在 XAML 中添加任何其他元素一样添加它:
...
<Button Content="My Button" ... />
...
如果你想让按钮在被点击时执行某事,那么你可以这样做:
<Button Content="My Button" Click="Button_Click" />
并在 MainWindow
的代码隐藏中,实现该方法:
...
private void Button_Click(object sender, RoutedEventArgs e)
{
// do something when clicked
}
...
我不会深入讨论命令或 MVVM 或任何其他内容,只是知道这不一定是大型项目的最佳设计模式。
然而,这部分让我对你的代码有点困惑:
public class Button : System.Web.UI.WebControls.WebControl, System.Web.UI.IPostBackEventHandler,System.Web.UI.WebControls.IButtonControl
您正在 Taillight_Project_3._1
命名空间中创建 class Button
,除了继承的内容外,没有任何功能或定义。我想这不会编译,因为你没有实现 IPostBackEventHandler
或 IButtonControl
接口。