PDA

View Full Version : سوال: نحوه بایند کردن دو تا کنترل از داخل دو تا UserControl



PetekDincos
شنبه 10 اردیبهشت 1390, 09:54 صبح
با سلام
من دو تا UserControl به نام های User1 و User2 دارم که داخل هر کدام از اینها یه تکست باکس است و از User2 در داخل User1 استفاده می کنم می خواستم بدونم آیا راهی وجود داره که وقتی که مقدار تکست تکست باکس داخل User2 تغییر کرد همین تکست در داخل تکست باکس User1 نیز تغییر بکند یعنی دو تا تکست باکس به همدیگر بایند باشند باتشکر

Amir Oveisi
شنبه 10 اردیبهشت 1390, 10:46 صبح
شما user2 رو چطور به user1 اضافه کردید؟ به عنوان content قرار دادید؟ یا یک property محسوب میشه واسه user1؟

مهدی فرزاد
شنبه 10 اردیبهشت 1390, 11:51 صبح
سلام
با اجازه آقا امیر
اگر user2 به عنوان content در User1 قرار داره میتونید به شکل زیر برای User2 یک Property مثلا با عنوان Text ایجاد کنید


public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}

public static readonly DependencyProperty TextProperty =
DependencyProperty.Register(
"Text",
typeof(string),
typeof(UserControl2),
new UIPropertyMetadata(string.Empty, new PropertyChangedCallback(textChangedCallBack)));

 

static void textChangedCallBack(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
UserControl2 usr = (UserControl2)sender;
usr.txt.Text = (
string)e.NewValue;
}

private void txt_TextChanged(object sender, TextChangedEventArgs e)

{
this.Text = this.txt.Text;
}



وخیلی راحت با کد زیر TextBox یوزر کنترل اول رو به خاصیت Text یوزر کنترل دوم Bind کنید

<TextBox x:Name="textBox" Text="{Binding Text, ElementName=userControl2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>


فایل ضمیمه را ملاحضه فرمایید

PetekDincos
شنبه 10 اردیبهشت 1390, 19:45 عصر
با سلام
من چطور برای یک پراپرتی توی یک UserControl یک رویداد TextChange معرفی کنم مثلا پراپرتی


public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}

که آقای فرزاد توی مثال قبل تعریف کردن می خوام یک رویداد مثل رویداد TextChange برای پراپرتی Text که وقتی مقدار این پراپرتی تغییر کرد این رویداد Handle بشه با تشکر

مهدی فرزاد
یک شنبه 11 اردیبهشت 1390, 08:31 صبح
سلام
برای مثال قبل این رو ببینید فکر کنم مشکل شما رو حل میکنه