PDA

View Full Version : کار نکردن رویداد کلیک تعریف شده در یوزرکنترل WPF



birtemp
چهارشنبه 14 تیر 1391, 12:31 عصر
سلام.
من توی wpf یه یوزرکنترل با فرمت dll درست کردم که اونرو به فرم یه پروژه wpf اضافه می کنم. رویداد کلیک این کنترل در بین رخدادهاش موجود هست و وقتی روش دابل کلیک می کنم هم کدهای کلیک یوزر کنترل ایجاد میشن ولی وقتی کدی رو توش قرار می دم کار نمیکنه.
اینم کدهایی که من استفاده کردم.

کد xaml یوزرکنترل:

<UserControl x:Class="button1.UserControl1
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Height="300" Width="300" Background="#FFB17C7C">
<Grid>
<Button Content="Button" Margin="10,10,12,12" Name="button1" />
</Grid>
</UserControl>

کد پشت صحنه یوزر کنترل:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 button1
{
/// <summary>
/// Interaction logic for UserControl1.xaml
/// </summary>
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}

public event EventHandler<RoutedEventArgs> Click;
}
}


کد xaml فرم برنامه:

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:button1;assembly=button1">
<Grid>
<my:UserControl1 Height="300" HorizontalAlignment="Left" Margin="10,10,0,0" Name="userControl11" VerticalAlignment="Top" Width="300" Click="userControl11_Click" />
</Grid>
</Window>


کد پشت صحنه فرم برنامه:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void userControl11_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("DFGFDGFD");
}
}
}

ممنون میشم اگه جوابمو با کدی که قرار دادم بفرمایین.

یاسردرا
چهارشنبه 14 تیر 1391, 23:42 عصر
فکر کنم منظورت اینه:

<c:UserControl1 ButtonBase.Click="UserControl1_Click_1" ></c:UserControl1>


private void UserControl1_Click_1(object sender, RoutedEventArgs e)
{
MessageBox.Show("");
}

یاسردرا
چهارشنبه 14 تیر 1391, 23:45 عصر
در مورد رویداد هم باید بگم که هنگامی که یک رویداد اجرا میشه فقط میتونه توابع خواصی(delegate) رو فرا خوانی کنه.

birtemp
جمعه 16 تیر 1391, 00:32 صبح
ممنون از جوابی که دادین.
ولی من بازم هم این مشکل رو دارم.
و رویداد کلیک دوباره هم کار نمیکنه.

لطفاً اگه میشه جواب رو تو کدهایی که گذاشتم جاگذاری کنید تا بدونم کجا باید بذارم.
بازم ممنون.

یاسردرا
جمعه 16 تیر 1391, 13:52 عصر
شرمنده دوست عزیز سوال تون رو بد متوجه شدم ولی این جوابشه:
در رویداد کلیک باتون در یوزرکنترل :

private void button1_Click(object sender, RoutedEventArgs e)
{
Click(sender, e);
}

در این صورت این رویداد در جنریک اضافه شد بقیه کدشما هم کاملا درسته.
درضمن جان خودم نمیدون چرا کسی در این انجن تشکر نمیکنه.