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

rahaomidi

Member
سلام
توی 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 را مثل بقیه ی کنترل ها اضافه میکنه دیگه
ممنون
  1. بله، اولین خط کد یک شی از کلاس Window را تعریف می‌کند.
  2. کلمه‌ی x در اینجا به معنای namespace است و برای تعریف namespace در XAML استفاده می‌شود. کلمه‌ی Class نیز برای تعیین نام کلاسی است که این شی از آن ساخته می‌شود. در اینجا، کلاس MainWindow از کلاس Window ارث‌بری کرده است و بنابراین می‌توان از آن به عنوان یک شی از کلاس Window استفاده کرد. کلمه‌ی xmlns نیز برای تعریف namespace در XAML استفاده می‌شود و معمولاً با یک پیشوند مشخص می‌شود. در اینجا، پیشوند x برای namespace مربوط به XAML استفاده شده است.
  3. کلمه‌ی xmlns به معنای XML namespace است و برای تعریف namespace در XAML استفاده می‌شود. آدرس و لینک وب مربوط به namespace مربوطه است و برای تعیین محل قرارگیری namespace استفاده می‌شود. برای مثال، آدرس "http://schemas.microsoft.com/winfx/2006/xaml/presentation" برای namespace مربوط به Presentation Framework در WPF استفاده می‌شود.
  4. xmlns:local برای تعریف namespace محلی استفاده می‌شود که در آن، کلاس‌هایی که در همان پروژه تعریف شده‌اند، قرار دارند. mc:Ignorable نیز برای تعیین عناصری است که در آن‌ها خطاهایی که ممکن است در آن‌ها وجود داشته باشد، نادیده گرفته شود. شی از کلاس Grid به عنوان یک container برای قرار دادن کنترل‌های دیگر درون آن استفاده می‌شود.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
تشکر


مثال ساده از مدیریت خطا در بایندینگ :

XML:
<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBox Name="txtValue"
            Text="{Binding Path=Value, NotifyOnValidationError=True, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}"/>
            
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="{}{0}">
                    <Binding ElementName="txtValue" Path="(Validation.Errors)[0].ErrorContent"/>
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </Grid>
</Window>

و

C#:
public partial class MainWindow : Window, INotifyPropertyChanged
{
    private int _value;
    public int Value
    {
        get { return _value; }
        set
        {
            if (value < 0)
                throw new Exception("Value cannot be negative.");
            _value = value;
            OnPropertyChanged("Value");
        }
    }

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string name)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
}

پروپرتی Validation.Errors ، یک attached property ای هست که در کنترل و المنت ای اجرا میشه که پروپرتی ای از اون کنترل ، Binding شده باشه و در اون Binding ، خطای اعتبارسنجی ای رخ بده .
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اجرای هم کلیک و هم Command از xaml و سی شارپ (بدون فراخوانی مستقیم کامند از سی شارپ) :


دقت شود که زمانی که هم رویداد کلیک و هم پروپرتی Command مقدار دارد ، رویداد کلیک ، زودتر از Command اجرا میشود .
پس میتوانیم در هندلر رویداد کلیک ، پروپرتیِ CommandParameter را تنظیم کنیم تا بعدش که Command اجرا میشود ، پارامتر مورد نظرش هم ارسال شود .
به این ترتیب نیازی به فراخوانی Command از درون رویداد نیست .

XML:
                <MenuItem Name="LoadingMenuItem" Header="بارگذاری" Click="LoadingMenuItem_Click"
                    Command="{Binding Path=AddItemsToImagePathsFromFolderCommand}"/>

و :

C#:
        private void LoadingMenuItem_Click(object sender, RoutedEventArgs e)
        {
            this.LoadImagePaths();
        }

        private void LoadImagePaths()
        {
            string selectedFolderPath = this.ShowFolderDialog();
            if (string.IsNullOrEmpty(selectedFolderPath) == true)
                return;

            this.LoadingMenuItem.CommandParameter = selectedFolderPath;
        }
 

ava282009

Member
مهاجرت به کانادا می‌تواند یک گام مهم در زندگی شما باشد. در اینجا چند نکته کلی در مورد مهاجرت به کانادا آورده شده است:

1. **انواع مهاجرت:**
- **اقامت دائم (Permanent Residency - PR):** این نوع مهاجرت بیشتر مورد توجه قرار گرفته و افراد می‌توانند برنامه‌های مختلفی مانند Express Entry، Provincial Nominee Program (PNP) و Family Sponsorship را انتخاب کنند.
- **تحصیلات و کار:** مهاجرت به کانادا بر اساس تحصیلات یا مهارت‌های شغلی نیز ممکن است.

2. **Express Entry:**
- یکی از معروف‌ترین برنامه‌های مهاجرت به کانادا است که بر اساس سیستم امتیازدهی انجام می‌شود.

3. **IELTS و تحصیلات:**
- آزمون زبان IELTS معمولاً یکی از الزامات مهاجرت به کانادا است. همچنین، تحصیلات مدرک تحصیلی مهمی برای امتیازدهی محسوب می‌شود.

4. **تجربه کار:**
- سابقه کار نیز امتیازهای مهاجرت را تحت الشعاع قرار می‌دهد. تجربه کار در شغل‌های مرتبط با لیست شغلی کانادا می‌تواند بسیار مفید باشد.

5. **مشاوره حقوقی و مهاجرتی:**
- دریافت مشاوره از وکلای مهاجرت یا مشاوران مهاجرتی می‌تواند به شما کمک کند تا مسیر مناسبی را انتخاب کنید.

6. **مهاجرت از طریق استارتاپ:**
- اگر شما یک کارآفرین هستید، برنامه‌های خاصی برای مهاجرت به کانادا وجود دارد.

7. **پناهندگی:**
- اگر در وضعیت پناهندگی هستید، باید به موارد مربوط به پناهندگی در کانادا توجه داشته باشید.

8. **ترتیبات مالی:**
- نیاز به اثبات توانایی مالی برای زندگی اولیه در کانادا و جلب امکانات لازم دارید.

مهاجرت به کانادا تحصیل در کانادا
 

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

بالا