【问题标题】:Click Event in Silverlight User ControlSilverlight 用户控件中的单击事件
【发布时间】:2011-07-14 14:19:16
【问题描述】:

我在 Silverlight 中有用户控件,它有一个按钮单击事件。当我将该用户控件添加到页面时,单击事件不会触发。我还有什么需要做的吗?

更新 用户控件本身会触发 click 事件。在页面内部时,它不会 页面

<navigation:Page x:Class="RadControlsSilverlightApp2.Page1" 
       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"
       mc:Ignorable="d"
       xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
       d:DesignWidth="640" d:DesignHeight="480"
       Title="Page1 Page" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 

       xmlns:my1="clr-namespace:TestSilverLight.UserControls;assembly=TestSilverLight">
<Grid x:Name="LayoutRoot">
    <sdk:Label Height="28" HorizontalAlignment="Left" Margin="101,38,0,0" Name="label1" VerticalAlignment="Top" Width="120" Content="Test page" />

    <my1:Top10Programs HorizontalAlignment="Left" Margin="335,71,0,0" Name="top10Programs1" VerticalAlignment="Top" />
</Grid>

用户控制

<UserControl x:Class="RadControlsSilverlightApp2.MainPage"
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:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" BorderThickness="1"  xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">

【问题讨论】:

  • 您能否提供更多详细信息(代码和/或 Xaml)。描述中没有说明用户控件如何实现 Button Click 事件。

标签: c# silverlight


【解决方案1】:

您是否在主页面中处理的用户控件中引发了事件?

用户控件 XAML

<Grid x:Name="LayoutRoot" Background="White" Height="133">
    <sdk:Label Height="18" HorizontalAlignment="Left" Margin="12,31,0,0" Name="label1" VerticalAlignment="Top" Width="58" Content="Name"  />
    <sdk:Label Content="Password" Height="18" HorizontalAlignment="Left" Margin="12,60,0,0" Name="label2" VerticalAlignment="Top" Width="58" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="89,27,0,0" Name="textBox1" VerticalAlignment="Top" Width="253" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="89,55,0,0" Name="textBox2" VerticalAlignment="Top" Width="253" />
    <Button Content="Login" Height="23" HorizontalAlignment="Left" Margin="161,101,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>

UserControl 后面的代码

public class userNameEventArgs : EventArgs
{
    public string userName{get;set;}
}

public partial class LoginBox : UserControl
{
    public event EventHandler<userNameEventArgs> LoggedIn;

    public LoginBox()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        LoggedIn(this, new userNameEventArgs(){userName=textBox1.Text});
    }
}

主页 XAML

<Grid x:Name="LayoutRoot" Background="White">
    <Button Content="Main Page" Height="23" HorizontalAlignment="Left" Margin="36,50,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    <local:LoginBox Margin="100,122,179,223" LoggedIn="LoginBox_LoggedIn" />
    <TextBlock Height="23" HorizontalAlignment="Left" Margin="36,376,0,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" Width="94" />
</Grid>

主页代码隐藏

public partial class MainPage : UserControl
{
    public MainPage()
    {
        // Required to initialize variables
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Mainpage pressed!!");
    }

    private void LoginBox_LoggedIn(object sender, userNameEventArgs e)
    {
        textBlock1.Text = e.userName;
    }
}

这允许在单击用户控件上的按钮时更新主页上的文本块。它引发了在主页上处理的事件。 EventArgs 在用户控件和主页之间传递信息。

希望这会有所帮助。

【讨论】:

  • 感谢您的回复。但我不希望在主页和控件之间进行通信。用户控件是自包含的
  • 您能否更具体地了解该按钮的功能?您是否在用户控件 xaml 和后面的代码中添加了单击事件?请参阅上面的代码段 1 和 2。用户控件中的单击事件不必引发事件。主页是否必须对用户控件的内容做任何事情?它是一个需要关闭的弹出窗口吗?您可以分享的任何更多信息都会有所帮助。我看到你做了一些 Telerik 参考;用户控件是否基于他们的容器之一?
  • Jason,我刚刚创建了一个非常简单的用户控件,它触发事件没有问题。我必须调查为什么其他用户控件没有触发。谢谢你的帮助。我给了你一个^,因为它很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2011-08-09
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
相关资源
最近更新 更多