2011-07-14 11 views
0

私は、ボタンクリックイベントを持つSilverlightでユーザーコントロールを持っています。そのユーザーコントロールをページに追加すると、clickイベントは発生しません。私は何か他に何かする必要がありますか?Silverlightユーザーコントロールのイベントをクリックします。

更新 ユーザーコントロールが単独でクリックイベントを発生させます。ページ内の、それは ページ

<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"> 

ていない場合

+0

詳細(コードおよび/またはXaml)を提供できますか?この説明では、ユーザーコントロールがButton Clickイベントをどのように実装するかについては説明していません。 –

答えて

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> 

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> 

メインページcodebehi後ろユーザーコントロールコードND

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は、ユーザーコントロールとメインページ間の情報を転送します。

これが役に立ちます。

+0

お返事ありがとうございます。しかし、私はメインページとコントロールの間の通信を探していません。ユーザーコントロールが自己完結しています – H20rider

+0

ボタンの動作をより具体的に表示できますか?ユーザーコントロールのxamlとコードの後ろにクリックイベントを追加しましたか?上記のコードセグメント1と2を参照してください。ユーザーコントロール内のクリックイベントは、イベントを発生させる必要はありません。メインページはユーザーコントロールの内容で何かをしなければならないのですか?それは閉じる必要があるポップアップですか?共有できる情報があれば、それは助けになります。あなたはTelerikの参考文献をいくつか作ったと思う。そのコンテナの1つに基づくユーザーコントロールですか? –

+0

Jason、私はちょうど非常に簡単なユーザーコントロールを作成しました。イベントを発生させるのに問題はありませんでした。私は他のユーザーコントロールがなぜ火災をしなかったのかを調べなければならない。助けてくれてありがとう。私はあなたにそれを与えました^それは非常に役に立つので – H20rider

関連する問題