ورود

View Full Version : کد در WinApp و WPF App یکسانه ؟



m.bibjan
شنبه 09 اردیبهشت 1391, 13:42 عصر
سلام میخواستم ببینم کدی رو که در WinApp بکار میره در WPF App هم میشه بکار برد؟
مثلا واسه انتقال از یه فرم به فرم دیگه من توی WinApp بکار میبرم
frmaddusers addusers = new frmaddusers();
Thread frmaddusers = new Thread(delegate() { Runfrmaddusers(new frmaddusers()); });
frmaddusers.SetApartmentState(ApartmentState.STA);
frmaddusers.Start();
this.Close();

}

private void Runfrmaddusers(frmaddusers frmaddusers)
{
Application.Run(frmaddusers);
}


توی WPF App هم اینا ها رو قبول میکنه ولی به

private void Runfrmaddusers(frmaddusers frmaddusers)
{
Application.Run(frmaddusers);
}[/CSHARP]
این (خط قرمز)که میرسه ارور میده.
ارورش هم اینه

مهدی فرزاد
شنبه 09 اردیبهشت 1391, 20:56 عصر
سلام
خیر کدهایی که برای کار با کنترل ها و فرم های برنامه هست بر اساس منطق و الگوی پیاده سازی Wpf متفاوت هستند

m.bibjan
شنبه 09 اردیبهشت 1391, 21:07 عصر
سلام ضمن خوش امدگویی ممنونم از اینکه بعد چند روز به بخشتون نگاهی انداختین.:تشویق:
فقط میخواستم ببینم واسه یه پروژه ، کد نویسی در محیط کدنویسی (Viwe Code) باید نوشته بشه یا (Viwe XAML) باید نوشته بشه؟
اگر بشه با (Viwe Code) پروژه نوشت پس نیازه به این محیط کد نویسی (Viwe XAML) چیه؟
یا همین طور بر عکس.
میخوام ببینم واسه ساختن یه نرم افزار توی WPF چه نوع کد نویسی و در چه محیطی ( (Viwe Code) یا (Viwe XAML) ) باید انجام بشه ؟
ممنون

iranrose63
یک شنبه 10 اردیبهشت 1391, 13:33 عصر
سلام ضمن خوش امدگویی ممنونم از اینکه بعد چند روز به بخشتون نگاهی انداختین


m.bibjan
1- لطف کنید به تنها مدیری که به بخش wpf سرمیزنه و جواب خیلی از سوالات رو میده احترام بذارید
2- لطف کنید زحمت بکشید تو همین سایت چند تا پست برای آموزش wpf هست مخصوصا آموزش آقای کیانی، اول اونها رو مطالعه کنید کتاب apress در زمینه wpf هم فوق العاده است اونو هم مطالعه کنید

درمورد سوالتون هم باید بگم وقتی شما تو winapp برنامه مینوشتید چیکار میکردید تو کدوم قسمت کد مینوشتید شما فرم رو در قسمت design طراحی میکردید و در قسمت codeBehind کدهای مورد نظرتون رو مینوشتید حالا هم میتونید این کار رو بکنید البته در xml شما کارهای خیلی بیشتری میتونید بکنید حتی میتونید اطلاعات از یک تابع بگیرید و در یک کنترل اونو نشون بدید binding ها امکان فوق العاده این که شما در xml میتونید از اونها استفاده کنید و کلی دردسر کد نویسی در codebehind رو کم کنید . در ضمن بهتره برای کار با wpf از MVVM استفاده کنید که در این صورت دیگه اصلا نباید در codebehind کد بنویسید

m.bibjan
یک شنبه 10 اردیبهشت 1391, 14:27 عصر
ممنون بخاطر تذکرتون
قصدم بی احترامی نبود اگه حرفم شبهه ی بی احترامی داره من معذرت میخوام.ببخشید.
قصدم فقط این بود تالار از این وضعی که داره بیرون بیاد و فعالتر باشه.اینم بدست نمیاد مگر با فعال بودن مدیر و بروبچه ها.

شما استفاده از الگوی MVVM رو بلدین؟راهنمایی کنید.من تا اضافه کردن Entity ADO.NET Entity Data Model رو بلدم بقیه اش رو نمیدونم چیکار کنم.اگه راهنمایی کنید ممنون میشم.

m.bibjan
یک شنبه 10 اردیبهشت 1391, 14:38 عصر
m.bibjan
در ضمن بهتره برای کار با wpf از MVVM استفاده کنید که در این صورت دیگه اصلا نباید در codebehind کد بنویسید

در ضمن من منظورتون رو ازین جمله متوجه نشدم؟

sahebgharan
یک شنبه 10 اردیبهشت 1391, 16:41 عصر
ببینید می شه همین جوری برنامه نوشت و هرجا جا بودو دم دست کد زد! ولی این منطقی نیست! به خاطر این معماری های مختلف به وجود اومده و داره از patternهای مختلف مثل MVVM استفاده می شه. یه جا فقط واسه اینکه که شما View برنامه تونو داشته باشین یه جا برای این که کلاساتون داده ها رو نگه دارن، یه جا واسه اینکه این داده ها بین کلاسا و DB ردوبدل بشن ووو.... پترن MVVM بهتون کمک میکنه که یه برنامه ی منطقی بنویسین که قابلیت گسترش پذیری بالایی هم داشته باشه (http://barnamenevis.org/showthread.php?338448-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-M-V-VM&p=1495867&viewfull=1#post1495867)

مهدی فرزاد
یک شنبه 10 اردیبهشت 1391, 19:27 عصر
سلام

من خودم هم خوشحال نیستم که دیر به دیر میام

اینترنت توی شهر ما کمی کند شده و من چند روزی نمیتونستم وارد سایت بشم

به هر حال

من فقط در خصوص استفاده از Xaml یک توضیح میدم
1-كدهاي XAML عموما كوتاه تر از نمونه هاي C# و یا VB.NET هستند و قابليت خوانايي بالايي دارند
2- امكان جدا سازي ظاهر برنامه از كدهاي آن
3-امكان تهيه ي رابط گرافيكي پويا با Xaml ساده تر است
4-امكان جدا سازي نقش طراح رابط گرافيكي و برنامه نويس
5-فراهم بودن ويرايشگرهاي قوي همانند Expression Blend برای کار با آن
براي مثال كدهاي XAML زير را در نظر بگيريد كه در يك StackPanel يك برچسب و يك دكمه قرار گرفته اند.

<StackPanel>
<TextBlock Margin="20">Welcome to the World of XAML</TextBlock>
<Button Margin="10" HorizontalAlignment="Right">OK</Button>
</StackPanel>

معادل اين كد در C# به شكل ذيل است كه خوانايي و قابليت نگهداري آن در مقايسه با كدهاي XAML فوق بسيار كمتر است:

// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
// Create the TextBlock
TextBlock textBlock = new TextBlock();
textBlock.Margin = new Thickness(10);
textBlock.Text = "Welcome to the World of XAML";
stackPanel.Children.Add(textBlock);
// Create the Button
Button button = new Button();
button.Margin= new Thickness(20);
button.Content = "OK";
stackPanel.Children.Add(button);



یا طریقه استفاده کنترل ها از Attached attribute در کد XAML
<Grid x:Name="LayoutRoot" Background="White">
<Rectangle Fill='Orchid'
MouseEnter='Rectangle_MouseEnter'
x:Name='smallRect'
Canvas.Left='20' />
</Grid>

و معادل آن با کد C#
// equivalent code for four attribute types
var rect = new Rectangle
{
Width = 40,
Fill = new SolidColorBrush(Colors.Orange)
};
// read value from property
double w = rect.Width;
// assign delegate to event
rect.MouseLeave += Rectangle_MouseEnter;
// directive attributes are only needed in XAML
// assign value to attached property
Canvas.SetLeft(rect, 50);
// read value from attached property
double l = Canvas.GetLeft(rect);
LayoutRoot.Children.Add(rect);
}
private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
{ }
خودتون قضاوت کنید

منبع جزوه جناب آقای نصیری

علاوه بر موارد با لا نگهداری Resource ها در Xaml و استفاده مجدد از آنها رو میشه نام برد

سوداگر
دوشنبه 11 اردیبهشت 1391, 14:41 عصر
سلام

منم توی مجله برنامه نویس خونده بودم که توی WPF کنترلهایی مثل ColorDialog رو نداریم ولی با اضافه کردن اسمبلی و فضای نام اون، از colordialog ویندوزی استفاده کنم.
البته من میخواستم توی پروژه ام از FolderBrowserDialog استفاده کنم ولی حتما بایستی تمام نام اون رو وارد می کردم! مثلا
System.Windows.Forms.FolderBrowserDialog fbDialog= new System.Windows.Forms.FolderBrowserDialog();
وقتی از using استفاده می کردم using System.Windows.Forms; تمامی پروژه به هم میریخت.