PDA

View Full Version : سوال: جلوگیری از تکرار کد



jeson_park
پنج شنبه 10 شهریور 1390, 15:24 عصر
با سلام

به این کد نگاه کنید


<TextBox Margin="0,95,46,0" Name="txtUsername" TabIndex="1" Height="23" TextChanged="txtUsername_TextChanged" HorizontalAlignment="Right" VerticalAlignment="Top" Width="120">
<TextBox.BitmapEffect>
<OuterGlowBitmapEffect x:Name="txtUsernameGlowBitMapEffect" GlowColor="Beige" GlowSize="0" />
</TextBox.BitmapEffect>
<TextBox.Triggers>
<EventTrigger RoutedEvent="TextBox.GotFocus">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="txtUsernameGlowBitMapEffect"
Storyboard.TargetProperty="GlowSize"
From="0" To="10" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.LostFocus">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="txtUsernameGlowBitMapEffect"
Storyboard.TargetProperty="GlowSize"
From="10" To="0" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBox.Triggers>
</TextBox>

کد مربوط به یه تکست باکس میشه که یه افکت هم بهش داده شده
حالا اگه بخوایم چند تا تکست باکس داشته باشیم
آیا باید برای همشون این همه کد بنویسیم؟؟

B.I.O.H.A.Z.A.R.D
پنج شنبه 10 شهریور 1390, 19:29 عصر
شما یه استایل برای textbox تعریف کنید، بعد هر وقت خواستید میتونید ازش استفاده کنید. آموزش شماره 1 آقای مهدی فرزاد رو ببینید متوجه میشید.

jeson_park
پنج شنبه 10 شهریور 1390, 19:48 عصر
با سلام و تشکر
آموزش رو دانلود نکردم چون مربوط به blend میشه توی Visual Studio ورژن 2010 چه طوری میشه؟؟

afsaneh.asp
جمعه 11 شهریور 1390, 16:57 عصر
سلام
شما میبایست برای textbox اتون یه style ایجاد کنید,این style رو میتونید داخل app یا یک resourceجداگانه یا اگر textbox ها رو فقط در یک window استفاده میکنید,داخل همن window , تعریفش کنید مثلا من اینجا واستون توی app گذاشتم:


<Application.Resources>
<Style x:Key="MyTxtBox" TargetType="TextBox">
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="BitmapEffect">
<Setter.Value>
<OuterGlowBitmapEffect x:Name="txtUsernameGlowBitMapEffect" GlowColor="Beige" GlowSize="0"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="TextBox.LostFocus">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="txtUsernameGlowBitMapEffect" Storyboard.TargetProperty="GlowSize" From="10" To="0" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.LostFocus">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="txtUsernameGlowBitMapEffect" Storyboard.TargetProperty="GlowSize" From="10" To="0" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Application.Resources>


خوب بعد هر کدوم از textbox هاتون که میخواید این استایل رو داشته باشه,style اش رو براش ست کنید مثلا:


<TextBox Style="{StaticResource MyTxtBox} " Margin="0,95,46,0" Name="txtUsername" TabIndex="1" />

cardano7
جمعه 11 شهریور 1390, 18:47 عصر
آاگر شما یک دکمه را از یک استایل انتخاب کردید باید رویداد های آن درون استایل مشخص شود یا می توان آن ها را در تک خود دکمه هم معرفی کرد؟

afsaneh.asp
جمعه 11 شهریور 1390, 21:16 عصر
چیزی که برای همه یه نوع المنت(مثلا textBox یا Button ای که شما فرمودین) مشترکه رو در style میاریم و هرچیز که خاص یکی از آن المنت هاس, خوب داخل تگ خودش میاریمش.

cardano7
شنبه 12 شهریور 1390, 14:42 عصر
چیزی که برای همه یه نوع المنت(مثلا textBox یا Button ای که شما فرمودین) مشترکه رو در style میاریم و هرچیز که خاص یکی از آن المنت هاس, خوب داخل تگ خودش میاریمش.

آخه یادمه سر این مورد اگر Event داخل Style تعریف نمی شد به مشکل بر می خوردیم:

<Style x:Key="FlatCloseButton" TargetType="Button">
<EventSetter Event="Button.Click" Handler="ButtonRemove_Click"></EventSetter>
<Setter Property="Control.Background" Value="{x:Null}" />
<Setter Property="Control.BorderBrush" Value="{x:Null}" />
<Style.Triggers>
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter Property="Control.Background" Value="{x:Null}" />
<Setter Property="Control.BorderBrush" Value="{x:Null}" />
<Setter Property="Control.FontWeight" Value="Bold" />
</Trigger>
<Trigger Property="Control.IsFocused" Value="True">
<Setter Property="Control.FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>