سئوالات و مباحث WPF

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
توی wpf که میریم ، کد زیر را مینویسه :


کد:
<Window x:Class="WPF_Practice.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
       
    </Grid>
</Window>

چندین سئوال دارم :
1) اون اولش که نوشته Window ، یعنی شی ای از کلاس Window دیگه درسته؟

2) بعدش که نوشته :

کد:
x:Class="WPF_Practice.MainWindow"
یعنی بجای اینکه از Window شی درست کنه ، از کلاس در فضای نام گفته شده (کلاس MainWindow) شی درست کنه . درسته؟ و بعد اینکه کلمه ی x که در بالا نوشت یعنی چه؟ متغییر هه؟ عملگر نقل قول : که در بالا نوشت هم یعنی چه؟ کلمه ی Class هم که نوشت ، زمانی میاد که بخوایم شی ای از یه کلاس را جایگزین کنیم؟ یعنی اینکه اول گفت شی ای از کلاس Window ، اما چون میخواد شی از کلاس فرزند ویندوز میخواد بسازه ، کلمه ی Class را آورد تا بگه که میخواد از فرزندش (که MainWindow هست) شی بسازه و نه اینکه شی از کلاس Window بسازه؟
پس چرا مثل کلاس های دیگه وقتی میخواد از کلاس MainWindow شی بسازه ، مستقیما همون اول بجای کلمه ی Window از کلمه ی MainWindow نام نبرد؟

3) من این خط ها را کلا متوجه نشدم :

کد:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"
هم کلماتی مثل xmlns . اینها متغییر هستن؟ و هم عملگرهایی مثل نقل قول و رابطه ی کلماتی که قبل از نقل قول و کلماتی که بعد از نقل قول میان مثل xmlns:x
و بعدش اینکه چرا آدرس و لینک وب را میده؟! مثلا آدرس "http://schemas.microsoft.com/winfx/2006/xaml/presentation" به چه معناست؟ لینک وب میده که چی بشه؟

4) و همینطور این دو خط زیر را متوجه نشدم :


کد:
xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"

خط بعدش (Title و ...) را متوجه شدم
آخر هم اینکه چرا شی ای از Grid را اتوماتیک میسازه؟ خوب هر وقت کاربر خواست ، خودش کنترل Grid را مثل بقیه ی کنترل ها اضافه میکنه دیگه
ممنون
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اه
این wpf هم از بیخ و بن ، نام پروپرتی ها و اعضاشو تغییر داد که! از پروپرتی bound و location گرفته تا controls و ...
توی ویندوز فرم ، برای اضافه کردن کنترلی به یک کنترل (مثلا فرم) ، از پروپرتی controls استفاده میکردیم . در wpf باید از کدوم عضو استفاده کنیم؟ کلا راه اضافه کردن کنترل در زمان اجرا در wpf چجوری هه؟
 

the_king

مدیرکل انجمن
سلام
توی wpf که میریم ، کد زیر را مینویسه :


کد:
<Window x:Class="WPF_Practice.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
      
    </Grid>
</Window>

چندین سئوال دارم :
1) اون اولش که نوشته Window ، یعنی شی ای از کلاس Window دیگه درسته؟
نه. تگ اطلاعاتی ئه. وقتی شما در HTML می نویسید BODY یعنی شی از کلاس BODY؟ قطعا خیر. اینم مثل اون BODY یک تگ ئه. کاربرد و مفهوم مشخصی داره که موثره ولی بحث کلاس و شیء سازی نیست. اطلاعات رو در قالب و فرمت XML که نمونه اش HTML ئه توصیف می کنه. شما دارید کد توصیفی رو با کد برنامه نویسی اشتباه می گیرید، این کد برنامه نویسی نیست. کد توصیفی ئه، XML ئه.

2) بعدش که نوشته :
کد:
x:Class="WPF_Practice.MainWindow"
یعنی بجای اینکه از Window شی درست کنه ، از کلاس در فضای نام گفته شده (کلاس MainWindow) شی درست کنه . درسته؟ و بعد اینکه کلمه ی x که در بالا نوشت یعنی چه؟ متغییر هه؟ عملگر نقل قول : که در بالا نوشت هم یعنی چه؟ کلمه ی Class هم که نوشت ، زمانی میاد که بخوایم شی ای از یه کلاس را جایگزین کنیم؟ یعنی اینکه اول گفت شی ای از کلاس Window ، اما چون میخواد شی از کلاس فرزند ویندوز میخواد بسازه ، کلمه ی Class را آورد تا بگه که میخواد از فرزندش (که MainWindow هست) شی بسازه و نه اینکه شی از کلاس Window بسازه؟
پس چرا مثل کلاس های دیگه وقتی میخواد از کلاس MainWindow شی بسازه ، مستقیما همون اول بجای کلمه ی Window از کلمه ی MainWindow نام نبرد؟

کلا برداشت اشتباهی دارید، این کد توصیفی ئه، کد برنامه نویسی نیست.

3) من این خط ها را کلا متوجه نشدم :
کد:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"
هم کلماتی مثل xmlns . اینها متغییر هستن؟ و هم عملگرهایی مثل نقل قول و رابطه ی کلماتی که قبل از نقل قول و کلماتی که بعد از نقل قول میان مثل xmlns:x
و بعدش اینکه چرا آدرس و لینک وب را میده؟! مثلا آدرس "http://schemas.microsoft.com/winfx/2006/xaml/presentation" به چه معناست؟ لینک وب میده که چی بشه؟

4) و همینطور این دو خط زیر را متوجه نشدم :


کد:
xmlns:local="clr-namespace:WPF_Practice"
        mc:Ignorable="d"

خط بعدش (Title و ...) را متوجه شدم
آخر هم اینکه چرا شی ای از Grid را اتوماتیک میسازه؟ خوب هر وقت کاربر خواست ، خودش کنترل Grid را مثل بقیه ی کنترل ها اضافه میکنه دیگه
ممنون
با XML آشنایی ندارید، احتمالا HTML رو هم خوب نمی شناسید. باید با فرمت کلی XML آشنا بشید تا بتوانید HTML، فایل های xml ئه unzip شده داخل docx و فرمت WPF و سایر فرمت های مشابه رو درک کنید. کد توصیفی شباهتی به کد برنامه نویسی نداره.
 

the_king

مدیرکل انجمن
اه
این wpf هم از بیخ و بن ، نام پروپرتی ها و اعضاشو تغییر داد که! از پروپرتی bound و location گرفته تا controls و ...
توی ویندوز فرم ، برای اضافه کردن کنترلی به یک کنترل (مثلا فرم) ، از پروپرتی controls استفاده میکردیم . در wpf باید از کدوم عضو استفاده کنیم؟ کلا راه اضافه کردن کنترل در زمان اجرا در wpf چجوری هه؟
چطور Controls بود و بهش کنترل اضافه میکردید، اینها هم Children دارند، داخل Children شون با Add شیء ای که ساخته بودید اضافه می کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
کلا برداشت اشتباهی دارید، این کد توصیفی ئه، کد برنامه نویسی نیست.


با XML آشنایی ندارید، احتمالا HTML رو هم خوب نمی شناسید. باید با فرمت کلی XML آشنا بشید تا بتوانید HTML، فایل های xml ئه unzip شده داخل docx و فرمت WPF و سایر فرمت های مشابه رو درک کنید. کد توصیفی شباهتی به کد برنامه نویسی نداره.

سلام
ممنون استاد علی . عیدتون مبارک باشه :rose:
بله . میدونم برداشتم اشتباست و html هم بلد نیستم ولی کلا عادت دارم یه چیزی رو که میخوام یاد بگیرم ، به علم هایی که از قبل دارم مرتبطش کنم . هر چند ممکنه ربط خاصی هم نداشته باشن و جلوتر متوجه بشم و اندک رابطه ای که پیدا کنم ، سریعتر یاد میگیرم . خودتون که شیوه ام را میدونین کم و بیش :green:
کتاب فارسی ای پیدا کردم درباره ی wpf و تازه شروع اش کردم . فعلا هیچ چی از xml نمیدونم .
اگه سئوالات 2 تا 4 را جواب بدین هم ممنون میشم


چطور Controls بود و بهش کنترل اضافه میکردید، اینها هم Children دارند، داخل Children شون با Add شیء ای که ساخته بودید اضافه می کنید.

ممنون
ولی در کلاس MainWindow (و اجدادش) که همچین عضوی (Children) نداره!
 

the_king

مدیرکل انجمن
اگه سئوالات 2 تا 4 را جواب بدین هم ممنون میشم
شدنی نیست، سوال هاتون از اساس اشتباهه. باید اول XML رو بشناسید و بعد سوال کنید، وقتی فرض سوالات تون اشتباهه جوابی نمیشه بهش داد.
ممنون
ولی در کلاس MainWindow (و اجدادش) که همچین عضوی (Children) نداره!
MainWindow یک Container نیست. شما یک Grid یا StackPanel یا امثال اون رو به عنوان Content اون پنجره خواهید داشت که خودشون Container هستند و بهش عضو اضافه می کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
شدنی نیست، سوال هاتون از اساس اشتباهه. باید اول XML رو بشناسید و بعد سوال کنید، وقتی فرض سوالات تون اشتباهه جوابی نمیشه بهش داد.

MainWindow یک Container نیست. شما یک Grid یا StackPanel یا امثال اون رو به عنوان Content اون پنجره خواهید داشت که خودشون Container هستند و بهش عضو اضافه می کنید.

سلام
ممنون استاد علی
پس چرا در ویندوز فرم (که در همه ی کنترل ها عضو controls بود) ، مثل wpf طراحی نکردن که فقط در کنترل های کانتینر باشه؟
بعد اینکه چرا MainWindow یک کنترل کانتینر نیست؟! ویندوز اصلی طبعا باید یه کنترل کانتینر هم باشه
 

the_king

مدیرکل انجمن
سلام
ممنون استاد علی
پس چرا در ویندوز فرم (که در همه ی کنترل ها عضو controls بود) ، مثل wpf طراحی نکردن که فقط در کنترل های کانتینر باشه؟

الان دارید اینو میگید، به تاریخ طراحی اش توجه کنید. 25 سال پیش نیازها در همین حد بود که یک صفحه نمایش کوچیک چند تا کنترل ساده و بدون تم رو نشون بده. اون زمان اصلا نیازی نبود که خیلی روی بحث طراحی فرم مانور بدن، چون پردازش طراحی گرافیکی از توان پردازنده ها فراتر بود. هر چقدر ساده تر میبود بهتر بود، برای همین تم کنترل ها به اون مفهوم که الان هست وجود نداشت.
بعد اینکه چرا MainWindow یک کنترل کانتینر نیست؟! ویندوز اصلی طبعا باید یه کنترل کانتینر هم باشه
چون باز همون گرفتاری که طراحی Window پایه داشت سرش میومد. اگه قرار بود همون معماری باشه که دیگه دلیلی نداشت بیان از نو مشابهش رو طراحی کنند. یکی از مشکلات Window همین بود که برای هر جزئی باید یک پنجره جدید ایجاد میشد که برای طراحی های پیچیده و تو در تو هم سنگین بود و هم مدیریتش پیچیده بود.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
الان دارید اینو میگید، به تاریخ طراحی اش توجه کنید. 25 سال پیش نیازها در همین حد بود که یک صفحه نمایش کوچیک چند تا کنترل ساده و بدون تم رو نشون بده. اون زمان اصلا نیازی نبود که خیلی روی بحث طراحی فرم مانور بدن، چون پردازش طراحی گرافیکی از توان پردازنده ها فراتر بود. هر چقدر ساده تر میبود بهتر بود، برای همین تم کنترل ها به اون مفهوم که الان هست وجود نداشت.

چون باز همون گرفتاری که طراحی Window پایه داشت سرش میومد. اگه قرار بود همون معماری باشه که دیگه دلیلی نداشت بیان از نو مشابهش رو طراحی کنند. یکی از مشکلات Window همین بود که برای هر جزئی باید یک پنجره جدید ایجاد میشد که برای طراحی های پیچیده و تو در تو هم سنگین بود و هم مدیریتش پیچیده بود.

ممنون استاد علی
من الان دقیق متوجه نشدم
جدای از کدهای xml ، الان شما فرض کنید توسط کدهای سی شارپ ، بخوایم یک کنترل کانتینر (که ظاهرا کنترل grid جزء کنترل کانتینر هست) را به MainWindow مون اضافه کنیم . در این صورت باید چه کدی بنویسیم؟ بالاخره حداقل باید ویندوز یا فرم اصلی جزء کنترل کانتینر باشه تا کنترل کانتینرهای دیگه را بهش اضافه کرد دیگه

بعد اینکه چرا در قسمت toolbox در wpf ام ، لیست تولباکس ها این قدر کمه؟ کلا دو تا لیست بیشتر نداره . یکی common control و یکی هم all control هه . ولی توی ویندوز فرم حداقل 7 نوع دسته بندی مختلف داشت . این لیست کانتینر کنترل ها و کامپوننت ها مثل تایمر و ... در پنجره ی toolbox در wpf کجان؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
چرا در کد زیر ، margin اش درست کار نمیکنه؟ :

کد:
    public partial class MainWindow : Window
    {
        private Button button;
        public MainWindow()
        {
            InitializeComponent();

            this.button = new Button();
            this.button.Content = "Test";
            this.button.Margin = new Thickness(100, 100, 50, 50);
            this.button.Width = 80;
            this.button.Height = 35;
           
            this.grid.Children.Add(this.button);
        }
    }

وقتی Width و Height را برمیدارم ، درست کار میکنه
یه پروپرتی توی wpf ، مثل پروپرتی Bound یا Size یا Location نیست که دقیق بصورت منسجم همه ی اطلاعات را بشه ست کرد؟ کار کردن با margin و از چهار طرف مقدار دادن برای ست کردن لوکیشن و سایز ، سخته (نسبت به Bound)
 

the_king

مدیرکل انجمن
ممنون استاد علی
من الان دقیق متوجه نشدم
جدای از کدهای xml ، الان شما فرض کنید توسط کدهای سی شارپ ، بخوایم یک کنترل کانتینر (که ظاهرا کنترل grid جزء کنترل کانتینر هست) را به MainWindow مون اضافه کنیم . در این صورت باید چه کدی بنویسیم؟ بالاخره حداقل باید ویندوز یا فرم اصلی جزء کنترل کانتینر باشه تا کنترل کانتینرهای دیگه را بهش اضافه کرد دیگه

هیچ پیچیدگی خاصی نداره :
کد:
        public MainWindow()
        {
            InitializeComponent();
            var g = new Grid();
            this.Content = g;
            var b = new Button() { Width = 100, Height = 30, Content = "Button1" };
            g.Children.Add(b);
        }

بعد اینکه چرا در قسمت toolbox در wpf ام ، لیست تولباکس ها این قدر کمه؟ کلا دو تا لیست بیشتر نداره . یکی common control و یکی هم all control هه . ولی توی ویندوز فرم حداقل 7 نوع دسته بندی مختلف داشت . این لیست کانتینر کنترل ها و کامپوننت ها مثل تایمر و ... در پنجره ی toolbox در wpf کجان؟
ویندوز سالهای طولانی با اون کنترل ها بوده، طبیعتا کنترل های استاندارش زیاد میشه. WPF هم عمر کمتری داره و هم مایکروسافت وقت زیادی صرف اش نکرده. کلا خیلی هم ازش استقبال نشد. اینکه چیزی رو نداره نشونه ناقص بودنش نیست، عادت می کنید به وجود بعضی چیزها، نبودش به نظرتون نقص محسوب میشه.
خودش چیزی به عنوان Timer نداره. در گوگل جستجو کنید انواع پیاده سازی هاش برای WPF هست.
 

the_king

مدیرکل انجمن
چرا در کد زیر ، margin اش درست کار نمیکنه؟ :

کد:
    public partial class MainWindow : Window
    {
        private Button button;
        public MainWindow()
        {
            InitializeComponent();

            this.button = new Button();
            this.button.Content = "Test";
            this.button.Margin = new Thickness(100, 100, 50, 50);
            this.button.Width = 80;
            this.button.Height = 35;
          
            this.grid.Children.Add(this.button);
        }
    }

وقتی Width و Height را برمیدارم ، درست کار میکنه
یه پروپرتی توی wpf ، مثل پروپرتی Bound یا Size یا Location نیست که دقیق بصورت منسجم همه ی اطلاعات را بشه ست کرد؟ کار کردن با margin و از چهار طرف مقدار دادن برای ست کردن لوکیشن و سایز ، سخته (نسبت به Bound)
شما هم که هر کاری می کنید بنظرتون سخته. با یک سیستم وکتوری مثل فلش کار نکردید، ابعاد و نسبت طول به عرض ثابت نمیمونه. باید قابل تغییر باشه. چیزی رو طراحی می کنید که معلوم نیست در چه ابعادی نمایش داده میشه. بجز برای موارد خاص قرار نیست طول و عرض و موقعیت ثابت بهش بدید. Margin فلسفه داره. ابعاد از قبل مشخص نیست، ممکنه بزرگ و کوچیک بشه، پس بجای تعیین یک موقعیت و ابعاد مشخص، تعیین می کنید که از گوشه و کنار Content ئه چقدر فاصله بگیره، همین. که وقتی سایز Content ئه عوض میشه با همون شرایط خودکار تغییر ابعاد بده. Width و Height رو که تعیین می کنید یعنی دیگه این فلسفه رو گذاشتین کنار.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
هیچ پیچیدگی خاصی نداره :
کد:
        public MainWindow()
        {
            InitializeComponent();
            var g = new Grid();
            this.Content = g;
            var b = new Button() { Width = 100, Height = 30, Content = "Button1" };
            g.Children.Add(b);
        }


ویندوز سالهای طولانی با اون کنترل ها بوده، طبیعتا کنترل های استاندارش زیاد میشه. WPF هم عمر کمتری داره و هم مایکروسافت وقت زیادی صرف اش نکرده. کلا خیلی هم ازش استقبال نشد. اینکه چیزی رو نداره نشونه ناقص بودنش نیست، عادت می کنید به وجود بعضی چیزها، نبودش به نظرتون نقص محسوب میشه.
خودش چیزی به عنوان Timer نداره. در گوگل جستجو کنید انواع پیاده سازی هاش برای WPF هست.

ممنون استاد علی
توی wpf ، وقتی روی یه عضو (مثل همین عضو content) که موس را روش کلیک میکنم و f1 را میزنم ، موقع بالا اومدن و لود سایت ، توی سایت نمیره . چرا؟ واسه همه هست یا فقط برای من اینجوری هه؟
بعد اینکه عضو content را معمولا (حالا نه همیشه) یا رشته میدن تا اون کنترل ، اون رشته را به نمایش دربیاره و یا شی ای از ContentControl ها را تا فرزند شی مورد نظر کنه؟ مثل اینی که شما مثال زدین؟ (البته میدونم نوع object هست و هر شی ای میشه بهش داد) . اگه این درسته و با content میشه فرزند یک کنترل را تعیین کرد ، پس عضو Children به چه کار میاد؟
دوم اینکه چرا میگین ازش استقبال نشد؟ الان برنامه نویسان متوسط به بالا و حتی مبتدی ها هم با wpf برنامه شون را مینویسن
سوم اینکه مثلا button (یا کنترلی) را اگه توی wpf بخوایم فقط تغییر مکان بدیم (دقیقا با همون ابعاد قبلی) ، راهی بجز استفاده از پروپرتی Margin نداریم و باید کلا موقع جابجایی هم نسبت اندازه ی قبلی را حساب کنیم؟
 

the_king

مدیرکل انجمن
ممنون استاد علی
توی wpf ، وقتی روی یه عضو (مثل همین عضو content) که موس را روش کلیک میکنم و f1 را میزنم ، موقع بالا اومدن و لود سایت ، توی سایت نمیره . چرا؟ واسه همه هست یا فقط برای من اینجوری هه؟
متوجه نشدم در مورد چی صحبت می کنید، صحبت تون در مورد Help آنلاین ویژوال استدیو ئه؟ در مورد برنامه ای است که نوشتید؟ یا مورد دیگه ای؟
بعد اینکه عضو content را معمولا (حالا نه همیشه) یا رشته میدن تا اون کنترل ، اون رشته را به نمایش دربیاره و یا شی ای از ContentControl ها را تا فرزند شی مورد نظر کنه؟ مثل اینی که شما مثال زدین؟ (البته میدونم نوع object هست و هر شی ای میشه بهش داد) . اگه این درسته و با content میشه فرزند یک کنترل را تعیین کرد ، پس عضو Children به چه کار میاد؟
شما اول یک فرض اولیه رو سرسری ابداع می کنید و بدون استناد به چیزی می پذیریدش بعد بر اساسش ابهام ایجاد می شه و میشه موضوع یک سوال تون. Content یعنی محتوا، نه فرزند. فرزندانی در کار نیست. یکسری کنترل ها موردی رو به عنوان محتوا نمایش می دهند، مثل Label. اما این محتوا فرزند Label نیست. فرزند فرق می کنه با محتوا. یکسری کنترل ها مثل انواع Panel ها و Grid یکسری فرزند دارند. که مجموعه فرزندان در Children قابل دسترسی ئه. از دید نمایشی شاید خیلی موارد شبیه هم به نظر بیان اما از لحاظ ساختار و مفهوم متفاوت هستند.
دوم اینکه چرا میگین ازش استقبال نشد؟ الان برنامه نویسان متوسط به بالا و حتی مبتدی ها هم با wpf برنامه شون را مینویسن
این چیزی که میگید معنی استقبال نمیده. مایکروسافت هر چیزی طراحی کنه بالاخره یکسری ازش استفاده خواهند کرد. شما ممکنه یک پلتفرم بسازید که از سطح مبتدی تا حرفه ای قابل استفاده باشه که ازش استقبال آنچنانی هم نشه، اینکه چه طیفی بتوانند ازش استفاده کنند ربطی به بحث استقبال نداره. در هر سایتی که مجموعه کد های زبان های مختلف رو ارائه می کنه یا فروم هایی که سوالات تخصصی برنامه نویسی در زبان های مختلف ارائه میشه می توانید آیتم های ثبت شده در پلتفرم های مختلف رو مقایسه کنید و ببینید استقبال ها در چه حدیه.
سوم اینکه مثلا button (یا کنترلی) را اگه توی wpf بخوایم فقط تغییر مکان بدیم (دقیقا با همون ابعاد قبلی) ، راهی بجز استفاده از پروپرتی Margin نداریم و باید کلا موقع جابجایی هم نسبت اندازه ی قبلی را حساب کنیم؟
نه. اجباری نیست. اون طراحی بر اساس پیشفرض ئه. وگرنه می توانید کنترل تون رو داخل Canvas ای قرار بدید و فرضا با Canvas.SetLeft موقعیت Left کنترل رو تغییر بدید. این مساله رو در نظر بگیرید که مثل کار کردن با ابعاد در Microsoft Word میمونه. فونت ها وکتوری هستند، برای همین شما صریحا مشخص نمی کنید که شروع فلان پاراگراف نسبت به بالای کاغذ چه موقعیتی داشته باشه، هر جزئی معمولا نسبت به ابعاد اطرافیانش تعیین موقعیت نسبی میشه. خیلی به ندرت با موقعیت و ابعاد صریح کار می کنید. این کاری که شما هم انجام می دهید همون حالت رو داره. خیلی به ندرت پیش میاد که لازم باشه Bounds چیزی رو بخواهید صریحا مشخص کنید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی
بله منظورم help آنلاین هست که با مرورگر اپرا باز میکنم ، با رد کردن هشدار، باز میشه . کروم اصلا بازش نمیکنه
اگه اشتباه نکنم ، کلمه ی xmlns ، چیزی هه که باهاش میشه فضای نام را تعریف کرد . حالا این فضای نام در xml چیه و چی کار میکنه ، تا جایی که من متوجه شدم و حداقل این فضای نام های پیش فرض (که شبیه آدرس وب میمونن) ، کاری انجام نمیدن (در مقاله ای که خوندم)
اما با این حال نمیدونم پاک کردن شون چرا باعث ارور میشه!
بعد اینکه نمیشه از کنترل های winform مثل System.Windows.Forms.Button و ... در wpf استفاده کرد و به شی grid اضافه کرد؟ یا کلا نمایش اش داد؟
بعد هم اینکه اون ابزار سیاه رنگ (در تصویر زیر) که وسط پروژه های wpf ظاهر میشه ، چیه و چجوری میشه بَرِش داشت؟

1.JPG
 
آخرین ویرایش:

the_king

مدیرکل انجمن
ممنون استاد علی
بله منظورم help آنلاین هست که با مرورگر اپرا باز میکنم ، با رد کردن هشدار، باز میشه . کروم اصلا بازش نمیکنه
از مشکل تون و دلیلش اطلاعی ندارم، شخصا از یک نسخه راهنمای دانلود شده استفاده می کنم.م
اگه اشتباه نکنم ، کلمه ی xmlns ، چیزی هه که باهاش میشه فضای نام را تعریف کرد . حالا این فضای نام در xml چیه و چی کار میکنه ، تا جایی که من متوجه شدم و حداقل این فضای نام های پیش فرض (که شبیه آدرس وب میمونن) ، کاری انجام نمیدن (در مقاله ای که خوندم)
اما با این حال نمیدونم پاک کردن شون چرا باعث ارور میشه!
قاعدتا وقتی باید نسبت به حذف موردی اقدام کنید که کامل نسبت به ماهیت و نقشش شناخت دارید و میدونید اضافیه و دلیلی برای وجودش نیست. وقتی نمیدونید چیه و خاصیتش چیه، چه اصراری برای حذف کردنش دارید؟
بعد اینکه نمیشه از کنترل های winform مثل System.Windows.Forms.Button و ... در wpf استفاده کرد و به شی grid اضافه کرد؟ یا کلا نمایش اش داد؟
شدنش که میشه اما در استفاده ازش خیلی دقت کنید، تضمینی وجود نداره که بدون مشکل کار کنه. شما دارید بزور دو سیستم متفاوت و ناسازگار رو با هم ادغام می کنید. همونقدر که برای انجامش به دلایل خیلی محکم و اجتناب ناپذیر احتیاج دارید برای مشکلاتش هم باید آمادگی داشته باشید. یک شی از نوع System.Windows.Forms.Integration.WindowsFormsHost می سازید و کنترل مورد نظر تون رو به عنوان یک فرزند داخلش اضافه می کنید. این WindowsFormsHost خودش برای قرار گیری داخل Grid سازگاری داره.
بعد هم اینکه اون ابزار سیاه رنگ (در تصویر زیر) که وسط پروژه های wpf ظاهر میشه ، چیه و چجوری میشه بَرِش داشت؟
مشاهده پیوست 112093
اون منو رو صرفا برای شما که در حال Debug کردن پروژه تون هستید نشون میده، برای نسخه نهایی کاربر که Release می کنید نشون نمیده، پس دلیلی برای غیر فعال کردنش نیست، اما اگر بخواهید غیر فعال بشه در منوی Tools ویژوال استدیو تنظیمات Options رو باز کنید. در بخش Debugging بخش General تیک گزینه Enable UI Debugging Tools for XAML رو بردارید.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
از مشکل تون و دلیلش اطلاعی ندارم، شخصا از یک نسخه راهنمای دانلود شده استفاده می کنم
شما قبلا بهم نرم افزاری دادین که راهنما را دانلود میکنه . منم برای دات نت 4.7 و ویژال استودیوی 2017 رو دانلود کردم ولی موقع نصب راهنما ، گفت فایل ها خرابه
خودمم فقط راهنمای نسخه ی 2010 را بصورت آفلاین دارم


شدنش که میشه اما در استفاده ازش خیلی دقت کنید، تضمینی وجود نداره که بدون مشکل کار کنه. شما دارید بزور دو سیستم متفاوت و ناسازگار رو با هم ادغام می کنید. همونقدر که برای انجامش به دلایل خیلی محکم و اجتناب ناپذیر احتیاج دارید برای مشکلاتش هم باید آمادگی داشته باشید. یک شی از نوع System.Windows.Forms.Integration.WindowsFormsHost می سازید و کنترل مورد نظر تون رو به عنوان یک فرزند داخلش اضافه می کنید. این WindowsFormsHost خودش برای قرار گیری داخل Grid سازگاری داره.

ممنون استاد علی
در مورد این تیکه ، از چه لحاظ میگین ممکنه مشکل پیش بیاد و ناسازگار باشن؟
آخه هر دو کنترل و کلاس و هر دوی wpf و winform رو هم مایکروسافت طراحی کرد . اگه قرار به مشکل پیش اومدن بود ، یا طراحی نمیکرد یا توی راهنماش میگفت.
خودتون تا حالا به مشکل برخوردین؟
بعد اینکه اگه قرار نباشه از کنترل های winform در wpf استفاده بشه ، آخه خود wpf که کنترل هاش بسیار بسیار کمتر از کنترل های winform هستن . در این صورت ، پیشنهادتون استفاده از پلاگین ها و کمپوننت های شرکت های دیگه در wpf هست؟ بجای استفاده از کنترل های winform در wpf ؟
 

the_king

مدیرکل انجمن
شما قبلا بهم نرم افزاری دادین که راهنما را دانلود میکنه . منم برای دات نت 4.7 و ویژال استودیوی 2017 رو دانلود کردم ولی موقع نصب راهنما ، گفت فایل ها خرابه
خودمم فقط راهنمای نسخه ی 2010 را بصورت آفلاین دارم
یا نسخه آپدیت شده برنامه رو استفاده نکردید یا درست دانلود نشده. خودم برای 2015 و 2017 بدون مشکل استفاده کردم.

ممنون استاد علی
در مورد این تیکه ، از چه لحاظ میگین ممکنه مشکل پیش بیاد و ناسازگار باشن؟
آخه هر دو کنترل و کلاس و هر دوی wpf و winform رو هم مایکروسافت طراحی کرد . اگه قرار به مشکل پیش اومدن بود ، یا طراحی نمیکرد یا توی راهنماش میگفت.
اینکه دلیل سازگار موردی نیست، XBox و XBOX 360 هم طراح هردوشون مایکروسافته و قراره سازگار باشند، ولی همه عناوین روی XBox با XBox 360 سازگار نیستند. برای این منظور لیست عناوین سازگار تهیه می کنند، مثل سازگاری خیلی از سیستم عامل ها. ویندوز هم همینطوره. مگه الزامه که همه نرم افزار های نسخه قدیمی ویندوز با نسخه های جدید سازگار باشه؟ بعضی هاشون هست، بعضی هاشون نیست.
خودتون تا حالا به مشکل برخوردین؟
شخصا هیچوقت همچین مواردی رو ترکیب نمی کنم، ترکیب دو تا سیستم گرافیکی با معماریهای مختلف و موتور گرافیکی کاملا متفاوت رو منطقی نمیدونم، کاربردی هم برام نداشته.
بعد اینکه اگه قرار نباشه از کنترل های winform در wpf استفاده بشه ، آخه خود wpf که کنترل هاش بسیار بسیار کمتر از کنترل های winform هستن . در این صورت ، پیشنهادتون استفاده از پلاگین ها و کمپوننت های شرکت های دیگه در wpf هست؟ بجای استفاده از کنترل های winform در wpf ؟
پیشنهاد خاصی ندارم، اینها همه شون گزینه هایی است که باید در نظر بگیرید. در طراحی نرم افزار یکسری موارد از قبل موجوده، یکسری موارد موجود نیست ولی مشابهش در دسترس ئه و خریداری میشه و بقیه توسط خود تیم توسعه دهنده طراحی میشه. همه این گزینه ها هست و باید در نظر گرفته بشه. توسعه نرم افزار صرفا بر پایه چیزی که قبلا نوشته شده و آماده است عملی نیست، اگر موردی مناسبی موجود نباشه طراحی اش می کنند. اما اینکه دو تا سیستم متفاوت رو با هم ترکیب کنید به چه منظوریه؟ باید ببینید با چه هدفی WPF رو انتخاب کردید و با چه هدفی WinForms رو. وقتی اینها رو با هم ترکیب کنید، فقط مزایاشون رو بدست نمی آورید، معایب هر دو رو هم یکجا میارید در پروژه تون.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی
میگم استاد علی ، کد زیر در xml به چه معنی هست؟ :


کد:
<Button>matn</Button>

فرض کنید این را در زیر مجموعه ی شی Grid بذاریم
این الان پروپرتی ای براش مشخص نشده که مثلا پروپرتی Content را برابر مقدار matn بگیر ولی این از کجا میفهمه که باید مقدار این پروپرتی را به این مقدار ست کنه؟
 

the_king

مدیرکل انجمن
ممنون استاد علی
میگم استاد علی ، کد زیر در xml به چه معنی هست؟ :


کد:
<Button>matn</Button>

در XML یعنی درج یک تگ Button که داخلش محتوایی با مقدار matn باشه. همین. عینا مشابه تگ Reza ای داخلش محتوایی با مقدار Student باشه. در XML هیچ چیزی بیشتر از این معنی نمیده. تگ Button برای XML همونقدر معنی داره که تگ PEPSI و Maryam.

فرض کنید این را در زیر مجموعه ی شی Grid بذاریم
این الان پروپرتی ای براش مشخص نشده که مثلا پروپرتی Content را برابر مقدار matn بگیر ولی این از کجا میفهمه که باید مقدار این پروپرتی را به این مقدار ست کنه؟
کاملا به مفسری بستگی داره که داده های دلخواهش رو از داخل کد XML میخونه و تفسیر می کنه. استاندارد XML رعایت شده در این حد که تگی با نام قابل قبول باز شده، محتوای استانداری مابینش قرار گرفته و تگ به درستی بسته شده. اما اینکه با مفسری که قراره داده رو تفسیر کنه چقدر سازگاری داره مربوط به خود XML نیست، مربوط به مفسر ئه. XML فقط داده رو با فرمت استانداردش ثبت کرده ولی در تفسیرش هیچ نقشی نداره.
 

جدیدترین ارسال ها

بالا