带有事件处理程序的UWP模板控件
我是UWP的新手,正在尝试。请告诉我,如果它太基本的链接。 我正在开发一个自定义控件(UWP模板控件),带有一些文本框和按钮。理想情况下,我希望在主页中使用此控件作为标题控件,根据Templatecontrol中的每个按钮单击,我希望呈现不同的页面。 现在进入基本问题,如何在CustomControl中连接事件处理程序 这是我的Generic.xaml:(Project1.Library) MainPage.xaml:(项目1)带有事件处理程序的UWP模板控件,uwp,Uwp,我是UWP的新手,正在尝试。请告诉我,如果它太基本的链接。 我正在开发一个自定义控件(UWP模板控件),带有一些文本框和按钮。理想情况下,我希望在主页中使用此控件作为标题控件,根据Templatecontrol中的每个按钮单击,我希望呈现不同的页面。 现在进入基本问题,如何在CustomControl中连接事件处理程序 这是我的Generic.xaml:(Project1.Library) MainPage.xaml:(项目1) 我想访问的视图在Project1中可用,因此我想在MainPa
我想访问的视图在Project1中可用,因此我想在MainPage.xaml.cs上编写代码来加载这些内容或框架。如何向模板控件添加按钮单击事件 为按钮添加一个名称,以便在代码隐藏中找到对象
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UWP.CustomControls.Library">
<Style TargetType="local:MyCustomControl" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyCustomControl">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{TemplateBinding FirstName}" Margin="8 8 2 8" />
<Button Name:"_BtnGo" Content="Go!" Click="MyCustomControl_Click" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
添加了一个指向button控件的指针,并将buttons事件传递给控件中的事件处理程序
private Button _BtnGo;
public string FirstName
{
get { return (string)GetValue(FirstNameProperty); }
set { SetValue(FirstNameProperty, value); }
}
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName", typeof(string), typeof(MyCustomControl), new PropertyMetadata(string.Empty));
public event EventHandler Click;
public event EventHandler<RoutedEventArgs> GoClicked;
protected override void OnApplyTemplate()
{
_BtnGo = GetTemplateChild(nameof(_BtnGo)) as Button;
_BtnGo.Click += (s, e) => GoClicked?.Invoke(s, e);
}
private按钮;
公共字符串名
{
获取{return(string)GetValue(FirstNameProperty);}
set{SetValue(FirstNameProperty,value);}
}
公共静态只读DependencyProperty FirstNameProperty=
Register(“FirstName”、typeof(string)、typeof(MyCustomControl)、newpropertyMetadata(string.Empty));
公共事件事件处理程序单击;
公共事件事件处理程序;
受保护的覆盖无效OnApplyTemplate()
{
_BtnGo=GetTemplateChild(nameof(_BtnGo))作为按钮;
_BtnGo.Click+=(s,e)=>GoClicked?.Invoke(s,e);
}
给出的答案有什么问题?
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<controls:MyCustomControl Width="400" Height="35" Background="Orange"
Margin="20" FirstName="MyFName" LastName="MyLName" Click="MyCustomControl_Click"/>
<Button Content="Show!" x:Name="Text1" />
</Grid>
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UWP.CustomControls.Library">
<Style TargetType="local:MyCustomControl" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyCustomControl">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{TemplateBinding FirstName}" Margin="8 8 2 8" />
<Button Name:"_BtnGo" Content="Go!" Click="MyCustomControl_Click" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
private Button _BtnGo;
public string FirstName
{
get { return (string)GetValue(FirstNameProperty); }
set { SetValue(FirstNameProperty, value); }
}
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName", typeof(string), typeof(MyCustomControl), new PropertyMetadata(string.Empty));
public event EventHandler Click;
public event EventHandler<RoutedEventArgs> GoClicked;
protected override void OnApplyTemplate()
{
_BtnGo = GetTemplateChild(nameof(_BtnGo)) as Button;
_BtnGo.Click += (s, e) => GoClicked?.Invoke(s, e);
}