C# SortedObservableCollection by string property of object
<p>Maybe this has already been answered, but I couldn't find in on Google. If it has been I apologize. I have a <code>SortedObservableCollection&lt;TargetViewModel&gt;</code> that I am trying to get in alphabetical order from A-Z based on a string property on <code>TargetViewModel</code>. I implemented <code>CompareTo</code> on <code>TargetViewModel</code>, the problem is that there's a special constant tab who's string property is just a + sign that we're using as a way to add a new tab. This needs to be to the right of all tabs and adding any new tab needs to fit in before the + sign and after a constant tab that should always be at the left most position. Is there a way to specify to tabs, on that is on the left and one on the right and order all tabs in between the two? i.e. | MainTab | Tab A | Tab B | Tab C | + |</p>

<p>Here's what my <code>CompareTo</code> function looks like:</p>

<pre><code>public int CompareTo(object obj)
{
    if (obj == null)
        return 1;
    TargetViewModel tvm = obj as TargetViewModel;
    if (tvm != null)
    {
        return string.Compare(tvm.Header, Header, StringComparison.CurrentCultureIgnoreCase);
    }

    throw new ArgumentException("Object is not a TargetViewModel");
}
</code></pre>