Witam problem jest w odświeżaniu kontrolki listview kontrolka jest zbindowana z listą obiektów, która ma zaimplementowaną klasę INotifyCollectionChanged. kontrolka nie jest odświeżana gdy zmieniam listę obiektów kod poniżej;
xaml
<Window x:Class="namiastka_crm.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:namiastka_crm"
Title="Namiastka CRM EA24" Height="485" Width="874" Loaded="Window_Loaded">
<DockPanel >
<Grid DockPanel.Dock="Top" Height="36">
<Menu HorizontalAlignment="Right" Height="36" VerticalAlignment="Top" Width="54">
<MenuItem x:Name="menuItem" Header="Opcje" Height="36" Width="54" RenderTransformOrigin="0.5,0.5">
<MenuItem.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</MenuItem.RenderTransform>
<MenuItem Header="Kontrahenci" ToolTip="Lista kontrahentów. Dodawanie, edytowanie i usuwanie konrtahentów" Click="MenuItem_Click" Height="26" Background="#FF89BCE6" BorderBrush="#FF89BCE6" Foreground="#FF740000">
<MenuItem.Icon>
<Image Source="image/plus.png" Width="auto" Height="auto" Margin="-3,0,-9,0"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Generuj nowy miesiąc" ToolTip="test" Click="MenuItem_Click_1" Height="26" Background="#FF89BCE6" BorderBrush="#FF89BCE6" Foreground="#FF740000">
<MenuItem.Icon>
<Image Source="image/plus.png" Width="auto" Height="auto" Margin="-3,0,-9,0"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
<ComboBox Name="cmb_miesiac" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="120" SelectedValuePath="Tag" SelectedIndex="{Binding cmb_miesiac_index}" SelectionChanged="ComboBox_SelectionChanged">
<ComboBox.Items>
<ComboBoxItem Content="Styczeń" Tag="1"/>
<ComboBoxItem Content="Luty" Tag="2"/>
<ComboBoxItem Content="Marzec" Tag="3"/>
<ComboBoxItem Content="Kwiecień" Tag="4"/>
<ComboBoxItem Content="Maj" Tag="5"/>
<ComboBoxItem Content="Czerwiec" Tag="6"/>
</ComboBox.Items>
</ComboBox>
</Grid>
<Grid DockPanel.Dock="Bottom" Height="39" >
<ProgressBar HorizontalAlignment="Right" Height="19" Margin="723,10,0,0" VerticalAlignment="Top" Width="143"/>
</Grid>
<Grid DockPanel.Dock="Left" Width="150">
<Label Content="Narzędzia" HorizontalAlignment="Left" Margin="50,0,0,0" VerticalAlignment="Top"/>
<Button Content="co wybrales" HorizontalAlignment="Left" Margin="10,26,0,0" VerticalAlignment="Top" Width="130" Height="25" Click="Button_Click"/>
</Grid>
<Grid>
<ListView Name="lvLista" ItemsSource="{Binding test}" SelectedValue="{Binding wybraneid}" SelectedValuePath="id" SelectionMode="Single">
<ListView.View >
<GridView >
<GridViewColumn Header="Nazwa" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding nazwa}" ToolTip="{Binding data_rachunku}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Kod świad" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding kod_swiad}" ToolTip="{Binding kod_swiad}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Hasło" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="******" ToolTip="{Binding hasło}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Zakres" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding zakres}" ToolTip="{Binding data_rachunku}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="ile Rachunków" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding ile_rachunków, StringFormat=d, ConverterCulture=en-GB}" ToolTip="{Binding data_klient}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Kolejka statystyczna data" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding data_kolej_stat, StringFormat=d, ConverterCulture=en-GB}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Kolejka statystyczna wysłana" Width="auto" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding kol_stat_czy_wyslana}" Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Kolejka statystyczna potwierdzona" Width="auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding kol_stat_czy_zatwierdzona}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</DockPanel>
</window>
cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace namiastka_crm
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public int rok {get; set; }
public int wybraneid {get;set;}
public int miesiac { get; set; }
public int cmb_miesiac_index { get; set; }
public List<lista> test { get; set; }
public MainWindow()
{
miesiac= sys.aktualny_miesiąc();
cmb_miesiac_index = miesiac - 1;
rok = sys.aktualny_rok();
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);
this.DataContext = this;
// lvLista.DataContext = test;
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// wyswietlanalista = admin.testowedane();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
Kontrahenci n = new Kontrahenci();
n.ShowDialog();
}
private void Label_MouseDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show(e.Timestamp.ToString());
}
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
miesiac_rok page = new miesiac_rok();
page.ShowDialog();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(wybraneid.ToString());
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
MessageBox.Show("nie zaznaczone");
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
MessageBox.Show("zaznaczone");
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
miesiac = cmb_miesiac.SelectedIndex + 1;
test = sys.listamiesiaca(miesiac, rok);
// lvLista.ItemsSource = test;
}
}
}
lista.cs
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace namiastka_crm
{
public class lista : INotifyCollectionChanged
{
private int ID;
public int id { get { return ID; }
set { if (ID != value)
{ ID = value;
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, id));}} }
private string Nazwa;
public string nazwa { get { return Nazwa; } set { if (value != Nazwa) { Nazwa = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, nazwa)); } } }
private string Kod_swiad;
public string kod_swiad { get { return Kod_swiad; } set { if (value != Kod_swiad) { Kod_swiad = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, kod_swiad)); } } }
private string Hasło;
public string hasło { get { return Hasło; } set { if (Hasło != value) { Hasło = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, hasło)); } } }
private string Zakres;
public string zakres { get { return Zakres; } set { if (Zakres != value) { Zakres = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, zakres)); } } }
private string Nr_rahunku;
public string nr_rahunku { get { return Nr_rahunku; } set { if (Nr_rahunku != value) { Nr_rahunku = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, nr_rahunku)); } } }
private DateTime Data_rachunku;
public DateTime data_rachunku { get { return Data_rachunku; } set { if (Data_rachunku != value) { Data_rachunku = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, data_rachunku)); } } }
private DateTime Data_klient;
public DateTime data_klient { get { return Data_klient; } set { if (Data_klient != value) { Data_klient = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, data_klient)); } } }
private DateTime Data_nfz;
public DateTime data_nfz { get { return Data_nfz; } set { if (Data_nfz != value) { Data_nfz = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, data_nfz)); } } }
private int Ile_rachunków;
public int ile_rachunków { get { return Ile_rachunków; } set { if (Ile_rachunków != value) { Ile_rachunków = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, ile_rachunków)); } } }
private DateTime Data_kolej_stat;
public DateTime data_kolej_stat { get { return Data_kolej_stat; } set { if (Data_kolej_stat != value) { Data_kolej_stat = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, data_kolej_stat)); } } }
private bool Kol_stat_czy_wyslana;
public bool kol_stat_czy_wyslana { get { return Kol_stat_czy_wyslana; } set { if (Kol_stat_czy_wyslana != value) { Kol_stat_czy_wyslana = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, kol_stat_czy_wyslana)); } } }
private bool Kol_stat_czy_zatwierdzona;
public bool kol_stat_czy_zatwierdzona { get { return Kol_stat_czy_zatwierdzona; } set { if (Kol_stat_czy_zatwierdzona != value) { Kol_stat_czy_zatwierdzona = value; OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, kol_stat_czy_zatwierdzona)); } } }
//protected void NotifyPropertyChanged(string propertyName)
//{
// if (PropertyChanged != null)
// {
// PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
// }
//}
//public event PropertyChangedEventHandler PropertyChanged;
public event NotifyCollectionChangedEventHandler CollectionChanged;
private void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (CollectionChanged != null)
{
CollectionChanged(this, e);
}
}
}
}
jeśli zna ktos jakis inny sposób na odświerzanie z bindigiem.
gdy zmieniam wartość w combo box to lv_list sie nie zmienia