PDA

View Full Version : ثبت اطلاعات در TextBox ساخته شده



MMRavari
یک شنبه 15 تیر 1399, 20:48 عصر
با سلام من برای ایجاد یک TextBox خاص اومدم اون رو درون یک ResourceDictionery با استفاده از Style بصورت زیر ساختم


<Style x:Key="newRectangleTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="15,15,0,0" BorderThickness="0,0,0,1" Grid.Row="0">
<TextBlock x:Name="txtTitle" Margin="5,5,5,0" Background="{x:Null}" Text="درآمد" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="32" Foreground="{TemplateBinding Foreground}"/>
</Border>
<Grid Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,0,0,15" BorderThickness="0,2,2,0">
<TextBlock x:Name="txtText1" Grid.Column="0" Margin="5,0,0,5" Text="ريال" Background="{x:Null}" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="25" Foreground="{TemplateBinding Foreground}"/>
</Border>
<Border Grid.Column="1" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,0,15,0" BorderThickness="2,2,0,0">
<TextBlock x:Name="txtText2" Grid.Column="1" Margin="0,0,5,5" Text="35،000،000،000" Background="{x:Null}" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="25" Foreground="{TemplateBinding Foreground}"/>
</Border>
</Grid>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>



میخوام بدونم برای تعریف مقادیر در هر کدوم از TextBlock های موجود در این TextBox ساخته شده چیکار باید بکنم همچنین Event هایی مثل MouseEnter و MouseLeave رو باید کجا تعریف کنم برای فراخوانی اون از دستور زیر استفاده کردم

<TextBox x:Name="txt1"

Style="{DynamicResource newRectangleTextBox}"

Background="#FFA5A5D6"
BorderBrush="#FF5252DC"
Margin="382,47,161,293"
Foreground="#FFBB36B5"/>


ممنون میشم راهنمایی کنید.

SajjadKhati
دوشنبه 16 تیر 1399, 14:05 عصر
میخوام بدونم برای تعریف مقادیر در هر کدوم از TextBlock های موجود در این TextBox ساخته شده چیکار باید بکنم


سلام
معلومه دیگه .
در کد اول ، هر جا عبارت "درآمد" و "ریال" و "35،000،000،000" را دیدین ، ویرایش کنین .




همچنین Event هایی مثل MouseEnter و MouseLeave رو باید کجا تعریف کنم برای فراخوانی اون از دستور زیر استفاده کردم



ممنون میشم راهنمایی کنید.


رویدادها را در کد دوم که دادین تعریف کنین .

MMRavari
دوشنبه 16 تیر 1399, 16:30 عصر
ممنون دوست عزیز
برای قرار گرفتن اعداد میخوام از بایندینگ استفاده کنم نه اینکه هر بار تو برنامه مقادیر رو وارد کنم
در خصوص رویدادها هم من میخوام Opacity اون رو برابر 0.5 تعریف کنم در هنگام وریداد
MouseEnter مقدارش 1 و در غیر اینصورت به حالت اولیه برگرده
نمونه رو پیوست کردم ممنون میشم راهنمایی کنید
مرسی

SajjadKhati
دوشنبه 16 تیر 1399, 16:45 عصر
ممنون دوست عزیز
برای قرار گرفتن اعداد میخوام از بایندینگ استفاده کنم نه اینکه هر بار تو برنامه مقادیر رو وارد کنم


خواهش میکنم .
بجای همون مقادیرِ "درآمد" و "ریال" و "35،000،000،000" ، براش TemplateBinding تعریف کنید :

https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/templatebinding-markup-extension

مثل TemplateBinding ای که برای بقیه ی پروپرتی ها در کد اول تعریف کردن ، شما برای پروپرتیِ Text از شیِ TextBlock ، اون TemplateBinding را تعریف کنید :



Text = "{TemplateBinding پروپرتی دلخواه از شیِ کنترلِ تکست باکس}"




در خصوص رویدادها هم من میخوام Opacity اون رو برابر 0.5 تعریف کنم در هنگام وریداد
MouseEnter مقدارش 1 و در غیر اینصورت به حالت اولیه برگرده
نمونه رو پیوست کردم ممنون میشم راهنمایی کنید
مرسی


خوب رویدادهای مربوطه را در شی TextBox (در کد دوم) تعریف کنید دیگه .
آموزش wpf را از سایت مایکروسافت اول پیگیری کنید تا به مباحث مسلط تر بشید .

MMRavari
دوشنبه 16 تیر 1399, 18:18 عصر
بسیار ممنونم
من مواردی رو که فرمودین در مورد Text انجام دادم اما نتونستم درون برنامه تعریف کنم
ممنون میشم در فایل پیوست اون رو قرا بدین
در مورد رویدادها در WPF میدونم اما درون ResourceDictionery نمیدونم چه جوری هست
در رابطه با آموزش هم متاسفانه در ساخت Resourc مطلبی پیدا نکردم اگر ممکنه آدرسی قرار بدین
به هر حال از محبتی که کردیدن ممنونم

SajjadKhati
سه شنبه 17 تیر 1399, 00:15 صبح
بسیار ممنونم
من مواردی رو که فرمودین در مورد Text انجام دادم اما نتونستم درون برنامه تعریف کنم
ممنون میشم در فایل پیوست اون رو قرا بدین


این بجای کد اول تون :



<Style x:Key="newRectangleTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="15,15,0,0" BorderThickness="0,0,0,1" Grid.Row="0">
<TextBlock x:Name="txtTitle" Margin="5,5,5,0" Background="{x:Null}" Text="{TemplateBinding Text}" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="32" Foreground="{TemplateBinding Foreground}"/>
</Border>
<Grid Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,0,0,15" BorderThickness="0,2,2,0">
<TextBlock x:Name="txtText1" Grid.Column="0" Margin="5,0,0,5" Text="ريال" Background="{x:Null}" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="25" Foreground="{TemplateBinding Foreground}"/>
</Border>
<Border Grid.Column="1" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,0,15,0" BorderThickness="2,2,0,0">
<TextBlock x:Name="txtText2" Grid.Column="1" Margin="0,0,5,5" Text="35،000،000،000" Background="{x:Null}" VerticalAlignment="Center" HorizontalAlignment="Center" FontFamily="B Nazanin" FontSize="25" Foreground="{TemplateBinding Foreground}"/>
</Border>
</Grid>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>


این هم بجای کد دوم تون :



<TextBox x:Name="txt1"


Style="{DynamicResource newRectangleTextBox}"


Background="#FFA5A5D6"
BorderBrush="#FF5252DC"
Margin="382,47,161,293"
Foreground="#FFBB36B5"
Text="متن بایند شده"/>


فقط پروپرتیِ Text ئه TextBox بایند شد .




در مورد رویدادها در WPF میدونم اما درون ResourceDictionery نمیدونم چه جوری هست
در رابطه با آموزش هم متاسفانه در ساخت Resourc مطلبی پیدا نکردم اگر ممکنه آدرسی قرار بدین
به هر حال از محبتی که کردیدن ممنونم


ربطی به ResourceDictionery نداره :



<TextBox x:Name="txt1"


Style="{DynamicResource newRectangleTextBox}"


Background="#FFA5A5D6"
BorderBrush="#FF5252DC"
Margin="382,47,161,293"
Foreground="#FFBB36B5"


Text="متن بایند شده"
Opacity="0.5"
MouseEnter="txt1_MouseEnter"
MouseLeave="txt1_MouseLeave"/>


و در کد سی شارپ :



private void txt1_MouseEnter(object sender, MouseEventArgs e)
{
this.txt1.Opacity = 1;
}


private void txt1_MouseLeave(object sender, MouseEventArgs e)
{
this.txt1.Opacity = 0.5;
}

MMRavari
سه شنبه 17 تیر 1399, 16:38 عصر
بسیار ممنون دوست خوب
فقط نمیدونم درون ریسورس نمیشه کاری انجام داد

SajjadKhati
سه شنبه 17 تیر 1399, 16:49 عصر
بسیار ممنون دوست خوب
فقط نمیدونم درون ریسورس نمیشه کاری انجام داد

خواهش میکنم
اگه منظورتون به قضیه ی رویدادهاست ، شاید نه . اگه هم بشه ، قطعا دردسرش بیشتر از این موارد هه و کدهای بیشتری لازم داره .
توی کدنویسی xaml ، معمولا رویدادهای مربوط به انیمیشن را مینویسن (یا تغییر پروپرتی ها را) .

MMRavari
سه شنبه 17 تیر 1399, 19:41 عصر
باز هم سپاس از لطف شما
من برنامه رو مطابق دستورات شما اصلاح کردم
اولأ در ریسورس تغییری ایجاد نشده بود
اما در رابطه با Text در زمان فراخوانی تغییرات اعمال میشه
عکس اول
151904
ولی در زمان اجراء بدین صورت میشه
151905
ممنون میشم راهنمایی کنید
در رابطه با آموزش هم کتاب یا سایتی وجود داره
ممنون

SajjadKhati
چهارشنبه 18 تیر 1399, 13:36 عصر
باز هم سپاس از لطف شما
من برنامه رو مطابق دستورات شما اصلاح کردم
اولأ در ریسورس تغییری ایجاد نشده بود
اما در رابطه با Text در زمان فراخوانی تغییرات اعمال میشه
عکس اول
151904
ولی در زمان اجراء بدین صورت میشه
151905
ممنون میشم راهنمایی کنید
در رابطه با آموزش هم کتاب یا سایتی وجود داره
ممنون

سلام
در ریسورس تغییر ایجاد شده . وگرنه بایند نمیشد .
نمیدونم کد اجراتون چیه . ممکنه موقع اجرا ، در رویدادی ، Text مربوط به همین شی TextBox (شی txt1) را تغییر داده باشید که در نتیجه ، متن اش تغییر میکنه .
بهترین آموزش هم سایت خود مایکروسافت هست .

MMRavari
سه شنبه 24 تیر 1399, 17:07 عصر
با سلام
برای ساده تر شدن مشکل اومدم به صورت زیر طراحی کردم






file:///C:/Users/Nima/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png





اومدم در یک ResourceDictionery

به شکل زیر عمل کردم


<Style x:Key="MyTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Black" BorderThickness="1">
<TextBox x:Name="txtTitle" />
</Border>
<Border Grid.Row="1" BorderBrush="Black" BorderThickness="1,0,1,1">
<TextBox x:Name="txtText"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>


در برنامه هم اون رو بدین شکل فراخوانی کردم


<TextBox Style="{DynamicResource MyTextBox}" Width="100" Height="50"/>


مشکلی که وجود داره اینه که در زمان فراخوانی نمی­تونم مقادیر txtTitle و txtText رو تعیین و به اون مقدار بدم

نمونه برنامه رو ضمیمه کردم
ممنون میشم راهنمایی کنید

SajjadKhati
سه شنبه 24 تیر 1399, 17:37 عصر
با سلام
برای ساده تر شدن مشکل اومدم به صورت زیر طراحی کردم






file:///C:/Users/Nima/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png





اومدم در یک ResourceDictionery

به شکل زیر عمل کردم

در برنامه هم اون رو بدین شکل فراخوانی کردم


مشکلی که وجود داره اینه که در زمان فراخوانی نمی­تونم مقادیر txtTitle و txtText رو تعیین و به اون مقدار بدم

نمونه برنامه رو ضمیمه کردم
ممنون میشم راهنمایی کنید






سلام
گفتم دیگه ، اون پروپرتی را باید TemplateBinding کنید . در پست 6 براتون مثال زدم .

barnamenevisjavan
چهارشنبه 25 تیر 1399, 11:22 صبح
با سلام
برای ساده تر شدن مشکل اومدم به صورت زیر طراحی کردم






file:///C:/Users/Nima/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png





اومدم در یک ResourceDictionery

به شکل زیر عمل کردم

در برنامه هم اون رو بدین شکل فراخوانی کردم


مشکلی که وجود داره اینه که در زمان فراخوانی نمی­تونم مقادیر txtTitle و txtText رو تعیین و به اون مقدار بدم

نمونه برنامه رو ضمیمه کردم
ممنون میشم راهنمایی کنید





خودت یه پراپرتی بساز بایندش کن به اون

barnamenevisjavan
چهارشنبه 25 تیر 1399, 11:43 صبح
با سلام
برای ساده تر شدن مشکل اومدم به صورت زیر طراحی کردم






file:///C:/Users/Nima/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png





اومدم در یک ResourceDictionery

به شکل زیر عمل کردم

در برنامه هم اون رو بدین شکل فراخوانی کردم


مشکلی که وجود داره اینه که در زمان فراخوانی نمی­تونم مقادیر txtTitle و txtText رو تعیین و به اون مقدار بدم

نمونه برنامه رو ضمیمه کردم
ممنون میشم راهنمایی کنید





وقتی شما استایل مینویسی دیگه اسم دادن به اون کنترل ها غیرمنطقی هستش شما یا باید از پراپرتی Attach استفاده کنی یا خودت برای کنترلت پراپرتی ایجاد کنی (این گزینه بیشتر وقتی استفاده میشه که کلا یه کنترل جدید بسازی)
مثال شمارو با پراپرتی Attach کامل کردم

درضمن، از DynamicResource استفاده نکنید باعث کند شدن برنامه میشه، زمانی باید از دینامیک ریسورس استفاده کنید که نیاز داشته باشید ریسورس هارو تغییر بدید و دوباره لود کنید مثل تغییر دادن تم برنامه، ولی برای این مثال شما اصلا نیازی به دینامیک ریسورس نیست

MMRavari
پنج شنبه 26 تیر 1399, 19:18 عصر
ممنون ار محبتتون
برای ایجاد پروپرتی دورن برنامه برای کنترل ساخته شده آموزشی یا کتابی وجود داره
ممنون میشم راهنمائی کنید
چون در سایتهای مختلف گشتم
هیچکدوم توضیحات خوبی ندادن
ممنون

barnamenevisjavan
شنبه 28 تیر 1399, 21:05 عصر
ممنون ار محبتتون
برای ایجاد پروپرتی دورن برنامه برای کنترل ساخته شده آموزشی یا کتابی وجود داره
ممنون میشم راهنمائی کنید
چون در سایتهای مختلف گشتم
هیچکدوم توضیحات خوبی ندادن
ممنون
توضیحات که هستش ولی خب انگلیسی هست، خودم درحال تهیه دوره wpf هستم 3 فصلش رو ضبط کردم مابقی مونده در فصل های بعدیش قراره این موارد رو اموزش بدم

MMRavari
شنبه 28 تیر 1399, 21:23 عصر
متشکر از لطفتون
اگه برای فروش قراردادین ممنون میشم اطلاع رسانی کنید
باز هم ممنون

barnamenevisjavan
یک شنبه 29 تیر 1399, 18:40 عصر
متشکر از لطفتون
اگه برای فروش قراردادین ممنون میشم اطلاع رسانی کنید
باز هم ممنون
برای فروش رو سایت دانشجویار قرار میگیره