یکی از مفاهیم کلیدی در توسعه WPF، اتصال داده است. در حالی که یکی از کنترلهای UI معمولاً مورد استفاده WPF یک منوی کشویی یا منوی جعبه ترکیبی برای تعامل بهتر کاربر است، مفهوم Data Binding حول اتصال دادهها از منابعی مانند فایلهای متنی یا پایگاه داده به کنترل UI میچرخد. در WPF، اتصال داده دو طرفه است زیرا از الگوی طراحی MVVM پیروی می کند.
امروز، من اجرای اتصال داده را با استفاده از یک فایل متنی با منوی کشویی یا منوی ترکیبی نشان خواهم داد. به یاد داشته باشید که در منوی کشویی WPF به عنوان منوی ترکیبی شناخته می شود.
در زیر برخی از پیش نیازها قبل از ادامه این آموزش آورده شده است،
- اکنون از فرم ارائه ویندوز (WPF) مطلع شده است .
- آشنایی با برنامه نویسی سی شارپ .
- آشنایی با C# LINQ .
می توانید سورس کد کامل این آموزش را دانلود کنید یا می توانید بحث گام به گام زیر را دنبال کنید. کد نمونه در Microsoft Visual Studio 2015 Enterprise توسعه داده شده است.
بیایید اکنون شروع کنیم.
مرحله 1
یک پروژه برنامه کاربردی WPF جدید ایجاد کنید و نام آن را "Data Binding using File" بگذارید.
مرحله 2
فایل "Content\files\country_list.txt" را به پروژه خود وارد کنید و سپس ویژگی های "Build Action" و "Copy to Output Directory" فایل را مطابق شکل زیر تنظیم کنید.
مرحله 3
حالا فایل "Helper_Code\Objects\CountryObj.cs" را ایجاد کنید و کد زیر را در آن جایگزین کنید.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Data_Binding_using_File.Helper_Code.Objects
- {
- public class CountryObj
- {
- public string CountryCode { get; set; }
- public string CountryName { get; set; }
- }
- }
در کد بالا، من یک شی ایجاد کرده ام که داده های ما را از فایل در یک لیست بارگذاری می کند و سپس آن داده را با منوی کشویی یا منوی ترکیبی پیوند می دهد.
مرحله 4
فایل "Model\BusinessLogic\HomeBusinessLogic.cs" را ایجاد کنید و کد زیر را در آن جایگزین کنید.
- using Data_Binding_using_File.Helper_Code.Objects;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace Data_Binding_using_File.Model.BusinessLogic.Helper_Code.Common
- {
- public class HomeBusinessLogic
- {
- public static List<CountryObj> LoadCountryList()
- {
- // Initialization
- List<CountryObj> lst = new List<CountryObj>();
- string line = string.Empty;
- try
- {
- // Initialization
- string srcFilePath = "Content/files/country_list.txt";
- string rootPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
- string fullPath = Path.Combine(rootPath, srcFilePath);
- string filePath = new Uri(fullPath).LocalPath;
- StreamReader sr = new StreamReader(new FileStream(filePath, FileMode.Open, FileAccess.Read));
- // Read file.
- while ((line = sr.ReadLine()) != null)
- {
- // Initialization.
- CountryObj obj = new CountryObj();
- string[] info = line.Split(':');
- // Setting.
- obj.CountryCode = info[0].ToString();
- obj.CountryName = info[1].ToString();
- // Adding.
- lst.Add(obj);
- }
- // Closing.
- sr.Dispose();
- sr.Close();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- return lst;
- }
- }
- }