انقیاد دادهها در WPF (بخش دوم)
نویسنده: مهدی ملائیان
تاریخ: ۱۳۹۴/۰۹/۰۸ ۱۸:۴۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public static ObservableCollection<Employee> GetEmployees()
{
var employees = new ObservableCollection<Employee>();
employees.Add(new Employee() { Name = "Mahdi", Title = "Manager" });
employees.Add(new Employee() { Name = "Nima", Title = "Teacher" });
employees.Add(new Employee() { Name = "Rahim", Title = "Assistant" });
employees.Add(new Employee() { Name = "Saeed", Title = "Administrator" });
return employees;
} <ComboBox Name="President" ItemsSource="{Binding}" FontSize="30"
Height="50"
Width="550">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Title}" Margin="5,0,0,0"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox> private ObservableCollection<Employee> employees;
public MainWindow()
{
InitializeComponent();
employees = Employee.GetEmployees();
DataContext = employees;
} <Grid>
<StackPanel Orientation="Horizontal">
<Slider Name="mySlider" Minimum="0" Maximum="100"
Width="300"/>
<TextBlock Margin="5" Text="{Binding Value,ElementName=mySlider}"/>
</StackPanel>
</Grid> public DateTime BornDate
{
get { return _bornDate; }
set
{
_bornDate = value;
OnPropertyChanged();
}
} public static ObservableCollection<Employee> GetEmployees()
{
var employees = new ObservableCollection<Employee>();
employees.Add(new Employee()
{ Name = "Mahdi", Title = "Manager", BornDate = DateTime.Parse("2008/8/8") });
employees.Add(new Employee()
{ Name = "Nima", Title = "Teacher", BornDate = DateTime.Parse("2012/3/14") });
employees.Add(new Employee()
{ Name = "Rahim", Title = "Assistant", BornDate = DateTime.Parse("2009/11/18") });
employees.Add(new Employee()
{ Name = "Saeed", Title = "Administrator", BornDate = DateTime.Parse("2014/7/28") });
return employees;
} <ListBox ItemsSource="{Binding}"
BorderThickness="1" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="100"/>
<TextBlock Text="{Binding Title}" Width="100" Margin="5,0,0,0"/>
<TextBlock Text="{Binding BornDate}" Margin="5,0,0,0"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
در زمانیکه در عملیات Data Binding نوع دادهی خصوصیت ما در Source (منبع داده) با نوع دادهی خصوصیت ما در target (کنترل یا View) متفاوت است، به یک مبدل در حین Binding نیاز داریم. این کار را از طریق یک کلاس که اینترفیس IValueConvertor را پیاده سازی کرده است، انجام میدهیم.
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime date = (DateTime)value;
PersianCalendar pc = new PersianCalendar();
var persianDate = string.Format
($"{pc.GetYear(date)}/{pc.GetMonth(date)}/{pc.GetDayOfMonth(date)}");
return persianDate;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
} xmlns:local="clr-namespace:DataConversion"
<Window.Resources>
<local:DateConverter x:Key="MyConverter"/>
</Window.Resources> <TextBlock Text="{Binding BornDate,Converter={StaticResource MyConverter}}" Margin="5,0,0,0"/>