Я думаю, что для решения проблемы с подсветкой, вам просто нужно убедиться, что ваш флажок в привязке TwoWay к свойству IsSelected.
<CheckBox Name="chk" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
Для флажка выбрать все есть несколько способов сделать это. Одним из способов было бы связать свойство IsChecked флажка, возможно, со свойством SelectedItems списка, а затем написать конвертер, который проверяет, равно ли количество выбранных элементов общему количеству строк.