View Full Version : تغيير مقدار يك Property از نوع int64
happy65_sh
سه شنبه 19 بهمن 1389, 10:37 صبح
سلام
يه تكست باكس دارم كه Text آن را به يك property به نام كد از نوع Int64 بايند كرده ام و با تغيير آن تكست باكس نام پر ميشود (نام معادل اون كد كه در DataBase ذخيره شده)وقتي BackSpace يا Delete را روش ميزنم مقدار قبلي در Property باقي ميمونه ولي تكست باكس خالي ميشه و در نتيجه تكست باكس نام هم همون مقدار قبلي را داره.ميدونم كه با InputBindings ميتوان اين كار را كرد اما فكر نميكنم كار درستي باشه كه مثلا 10 تا فرم دارم با حداقل 50 تا TextBox به همين حالت و اينه همه كار تكراري انجام داد.
از vs 2010 استفاده ميكنم و WPF و MVVM
مهدی فرزاد
سه شنبه 19 بهمن 1389, 14:50 عصر
سلام
بایند تکس باکس رو به صورت زیر انجام بدید ببینید درست میشه؟
مثلا
Text="{Binding FieldName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
یعنی هر وقت text عوض میشه آپدیت میکنه(کد قرمز رنگ )
happy65_sh
چهارشنبه 20 بهمن 1389, 12:40 عصر
دوست عزيز سلام وممنون از وقتي كه گذاشتيد
خط قرمز را نوشته ام اما بازهم جواب نميده
مهدی فرزاد
چهارشنبه 20 بهمن 1389, 15:11 عصر
Mode=TwoWay گذاشتید؟ کد in64 Property رو بگذارید
happy65_sh
دوشنبه 25 بهمن 1389, 07:27 صبح
سلام
بله مد two way هست
public Int64 Code
{
get
{
if(details!=null)
return details.code;
else
return 0;
}
set
{
details.code=value
onPropertyChanged("code");
}
}
در ضمن details يك كلاس است كه تعريف كرده ام
مهدی فرزاد
دوشنبه 25 بهمن 1389, 08:27 صبح
سلام مجدد
این Property شما در مقابل زمانی که TextBox یک رشته خالی رو براش ارسال میکنه چه کاری انجام میده؟ Property شما از نوع Int هست و null یا string.Empty رو قبول نمیکنه فکرکنم مشکل از همین باشه یک Convertor براش بنویسید که در زمانی که Value که میخواد به Property ارسال بشه اگه null یا Empty بود مقدار مثلا 0 رو ارسال کنه
class stringConvertor : IValueConverter
{
publicobject Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == "" | value == null)
return"0";
else
return value;
}
publicobject ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
حالا به کد Xaml اینو اضافه کنید
xmlns:local="clr-namespace:mynamespace"
//ارجاع به namespase کلاس کانورتور
<Window.Resources>
<local:stringConvertor x:Key="stringConvertor"/>
<Window.Resources/>
و به کد xaml تکس باکس هم اینو اضافه کنید
Text="{Binding FieldName,Mode=TwoWay, Converter={StaticResource stringConvertor}, UpdateSourceTrigger=PropertyChanged}"
اینو تست کن ببین جواب میگیری؟؟
happy65_sh
یک شنبه 01 اسفند 1389, 09:19 صبح
سلام دوست عزيز و واقعا ممنون
اين مدت اونقدر سرعت اينترنت اينجا بالا بود كه هربار جوابت را نوشتم با يه حال گيري اساسي مواجه شدم .. در هر صورت همون روز روش شما را امتحان كردم اما جواب نگرفتم ..من كه بيخيالش شدم
بازهم ازت ممنونم
مهدی فرزاد
یک شنبه 01 اسفند 1389, 10:21 صبح
سلام
من خیلی متاسفم
اگه میتونی نمونه برنامت رو برام بفرست تا ببینم مشکل کجاست
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.