title: How to redraw a ListViewItem when something other than the bound item changes?
body: <p>I've got a <code>ListView</code> that's bound to a collection of <code>Item</code> objects. I don't own the code for <code>Item</code>, so I can't add properties to it for my special binding needs.</p>
  
  <p>I need to color rows in the list based on attributes that I know about each bound item, and since I can't modify the <code>Item</code> code, I've accomplished this with a Style trigger and custom converter; the converter transforms each item like so:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;DataTrigger Binding="{Binding Converter={StaticResource ItemConverter}}" Value="2"&gt;
      &lt;Setter Property="Template"&gt;
          &lt;Setter.Value&gt;
              &lt;ControlTemplate TargetType="ListViewItem"&gt;
                   &lt;Border Name="Border" BorderBrush="Red" BorderThickness="1" Background="{StaticResource MyBrush}"&gt;
                       &lt;ContentPresenter /&gt;
                  &lt;/Border&gt;
              &lt;/ControlTemplate&gt;
          &lt;/Setter.Value&gt;
       &lt;/Setter&gt;
  &lt;/DataTrigger&gt;
  </code></pre>
  
  <p>The <code>ItemConverter</code> transforms the bound item into a return code, and I do my special style based on that code.</p>
  
  <p>This works fine, except that the code changes when the user does things, and I need to refresh the view. The only way I can find to do this is to refresh the <code>ItemSource</code>, and this is very slow.</p>
  
  <p>What I'd really like is to notify the <code>ListView</code> to redraw in such a way that only the visible rows are repainted, without touching the underlying collection, which doesn't need to change. This will affect only a handful of rows, rather than ALL of them, and I suspect this will handle my performance issue. But how to do this?</p>