hi,
I am having issue with a Collection shown in a Listview giving null on PropertyChanged when the item is not visible in the UI
Here is what i am trying to do.
I have a Checkbox in the list view that is registered to Checked
<ListView Name="lvSuites"
Grid.Row="3" Grid.ColumnSpan="2"
Margin="10,10,10,10"
ItemsSource="{Binding Path=SuiteList, Mode=TwoWay}"
Background="{StaticResource PressedBrush}"
BorderBrush="{StaticResource SolidBorderBrush}" Foreground="Black"><ListView.View><GridView><GridViewColumn Width="Auto"><GridViewColumn.CellTemplate><DataTemplate><CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Tag="{Binding Path=Name, Mode=TwoWay}" Checked="CheckBoxChecked" Unchecked="CheckBoxUnchecked"/></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn><GridViewColumn Width="40" Header="#" ><GridViewColumn.CellTemplate><DataTemplate><TextBlock TextAlignment="Center" Text="{Binding Path=TestNumber, Mode=TwoWay}"/></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn><GridViewColumn Width="300" Header="Suite"><GridViewColumn.CellTemplate><DataTemplate><TextBlock TextAlignment="Left" Text="{Binding Path=Name, Mode=TwoWay}"/></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn></GridView></ListView.View></ListView>When i call
private void ListSuiteAllMouseUp(object sender, MouseButtonEventArgs e)
{
foreach (var suite in ((ViewModel)DataContext).SuiteList)
{
suite.IsChecked = true;
}
}PropertyChanged is null for the items that are not visible in the Scrollview of the Listview, but the ones that are visible call Checked of the checkbox
public class Suite : INotifyPropertyChanged
{
private bool ischecked;
private string name;
private int testNumber;
public Suite()
{
IsChecked = false;
}
public bool IsChecked
{
get { return ischecked; }
set
{
ischecked = value;
OnPropertyChanged("IsChecked");
}
}
public int TestNumber
{
get { return testNumber; }
set
{
testNumber = value;
OnPropertyChanged("TestNumber");
}
}
public string Name
{
get { return name; }
set
{
name = value;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}and i have my ViewModel
DataContext = ViewModel();
private void CheckBoxChecked(object sender, RoutedEventArgs e)
{
//Do Something
}Can anyone help me get the PropertyChanged to not be null even for items that arnt visible in the ListView bc they are farther down the ScrollView becuase i want Checked to be called if i changed IsChecked property or if the user actually checks it. if i scroll down the list view and try setting IsChecked= true it works for the items that are now visible. It seems like PropertyChanged doesnt get attached till the object is rendered.