my xml is :
<Window.Resources>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</Window.Resources>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="381*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="101*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="110*" />
<RowDefinition Height="201*" />
</Grid.RowDefinitions>
<StackPanel Margin="320,0,0,0" Grid.RowSpan="2">
<ListView ItemsSource="{Binding employeeCollection}">
<ListView.View>
<GridView>
<GridViewColumn Header="Employee ID" DisplayMemberBinding="{Binding Path=EmployeeID}"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}"/>
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}"/>
<GridViewColumn Header="start" DisplayMemberBinding="{Binding Path=startHR}"/>
<GridViewColumn Header="finish" DisplayMemberBinding="{Binding Path=finishHR}">
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
<StackPanel Margin="2,0,0,137" Grid.RowSpan="2" Grid.ColumnSpan="2" Grid.Column="1">
<ListBox FontFamily="Guttman Yad-Brush" BorderBrush="AliceBlue" BorderThickness="5" ItemsSource="{Binding Path=dateItems}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectedValue="{Binding Path=dateItem}" Width="233" Height="164" />
</StackPanel>
<Button Click="Button_Click" Width="102" Height="34" Margin="0,98,-1,69" Grid.Row="1" Grid.Column="2" Content="בחר" FontFamily="Guttman Yad-Brush" Background="AliceBlue"></Button>
<TextBox Name="dateTextBox" Grid.Column="1" Margin="26,152,0,33" Grid.Row="1" FontFamily="Guttman Yad-Brush" Grid.ColumnSpan="2" />
<Calendar SelectedDate="{Binding Path=SelectedDate}" Height="168" Name="calendar1" Width="182" SelectedDatesChanged="calendar1_SelectedDatesChanged" Margin="66,68,485,115" Grid.RowSpan="2" />
</Grid>
-->
-->
this is the start window class :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.ComponentModel;
using System.Windows.Data;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
ConnectionViewModel vm;
public MainWindow()
{
InitializeComponent();
vm = new ConnectionViewModel();
DataContext = vm;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//((ConnectionViewModel)DataContext).dateItems = "test";
if (vm.cm.dateItem.ToString() != null)
{
dateTextBox.Text = vm.cm.dateItem.ToString();
vm.em.insert();
}
}
private void calendar1_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
string []s = calendar1.SelectedDate.ToString().Split(' ');
dateTextBox.Text = s[0];
}
}
public class ConnectionViewModel
{
public DateConectionModule cm;
public employeesGrid em;
public ConnectionViewModel()
{
cm = new DateConectionModule();
em = new employeesGrid();
}
public CollectionView dateItems
{
get { return cm.dateItems; }
}
public string dateItem
{
get {return cm.dateItem;}
set{ cm.dateItem = value;}
}
public CollectionView employeeCollection
{
get { return em.employeeCollection; }
}
}
public class DateConectionModule : INotifyPropertyChanged
{
public static string[] datesString = { "01.01.2011", "02.01.2011", "03.01.2011", "04.01.2011", "05.01.2011" };
public DateConectionModule()
{
employeesGrid em = new employeesGrid();
IList<dateItem> list = new List<dateItem>();
//query to database should be here
foreach (string dataString in datesString)
{
list.Add(new dateItem(dataString));
}
_dateItemList = new CollectionView(list);
}
private readonly CollectionView _dateItemList;
private string m_dateItem;
public CollectionView dateItems
{
get { return _dateItemList; }
}
public string dateItem
{
get { return m_dateItem; }
set
{
if (m_dateItem == value)
return;
m_dateItem = value;
OnPropertyChanged("dateItem");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class dateItem
{
public string Name { get; set; }
public dateItem(string name)
{
Name = name;
}
}
public class employeesGrid : INotifyPropertyChanged
{
private CollectionView _dateItemList;
private string m_dateItem;
public employeesGrid()
{
IList<employiesData> list = new List<employiesData>();
//query to database should be here
list.Add(new employiesData{
EmployeeID = "036854768",
FirstName = "yoav" ,
LastName = "stern",
startHR = "1600" ,
finishHR = "0200"});
_dateItemList = new CollectionView(list);
}
public void insert()
{
IList<employiesData> list = new List<employiesData>();
//query to database should be here
list.Add(new employiesData
{
EmployeeID = "0234235345",
FirstName = "shoki",
LastName = "zikri",
startHR = "1600",
finishHR = "0200"
});
_dateItemList = new CollectionView(list);
OnPropertyChanged("employeeCollection");
}
public CollectionView employeeCollection
{
get { return _dateItemList; }
set
{
if (_dateItemList == value)
return;
_dateItemList = value;
OnPropertyChanged("employeeCollection");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class employiesData
{
public string EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string startHR { get; set; }
public string finishHR { get; set; }
}
}
1.i want thar when insertTest is called the UI will load my new values
2.this is my first wpf work so any advices on how to make things more readable,effican,simple and notes about the my poor architecture i know it's crapy can some