WPF: Changing DataTemplate in combobox based on, void collection
<p>I have a collection <code>ObservableCollection &lt;FeatureLayer&gt; FeatureLayerList</code> and <code>ObservableCollection &lt;TextBlock&gt; TextBlock</code>. 
I need a DataTemplate, for <code>Combobox</code>, to display items from <code>FeatureLayerList</code>, and DataTemplate to display items from the <code>TextBlock</code>. 
Show DataTempales need so that if an empty collection <code>FeatureLayerList</code> show DataTemplate for collection <code>TextBlock</code> which is one element at a click which should give you a form which will be added items in the collection <code>FeatureLayerList</code>, after the items in the collection were added, you must close the form by which add items took place and show DataTemplate for collection FeatureLayerList with added elements. 
I do not understand the kinds of DataTemplates for my collections, and how to switch between them. </p>

<p>Explain to me how to use the DataTemplate for Combobox, and how to switch between DataTemplates depending on conditions.</p>

<pre><code>&lt;ComboBox x:Name="FeatureLayerComboBox" Validation.ErrorTemplate="{x:Null}" Margin="0, 2, 0, 10" SelectedItem="{Binding SelectedFeatureLayer}" ItemsSource="{Binding FeatureLayerList}" Width="258" Height="22" /&gt;

public ObservableCollection&lt;FeatureLayer&gt; FeatureLayerList
        {
            get
            {
                return featureLayerList;
            }
            set
            {
                featureLayerList = value;
                OnPropertyChanged("FeatureLayerList");
            }
        }
public FeatureLayer SelectedFeatureLayer
        {
            get { return selectedFeatureLayer; }
            set
            {
                selectedFeatureLayer = value;
                ShapeType.GeometryType = selectedFeatureLayer.ShapeType;
                OnPropertyChanged("SelectedFeatureLayer");
                OnPropertyChanged("IsEnabledSendButton");
            }
        }

public ObservableCollection&lt;TextBlock&gt; TextBlocks
{
    get 
    {
        textBlocks = new ObservableCollection&lt;TextBlock&gt;() {
        new TextBlock { Text="Create...", Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#00A6FF")) } };
        return  textBlocks;
    }
}

private static ObservableCollection&lt;FeatureLayer&gt; featureLayerList;
private ObservableCollection&lt;TextBlock&gt; TextBlocks textBlocks;
</code></pre>