DataTrigger not firing when property changed in DataGrid SelectedItem
<p>I'm trying to have a datatrigger fire when I update a property on my DataGrid for the SelectedItem. Can someone show me what I need to change to get it to work?</p>

<p>When a user selects an item in the grid, its Connected property gets set to true. My label in the DataGrid is supposed to change from red to green. It stays red.</p>

<p>I know the style works because if I start out with the property Connected set to true, they all come out green. It just does not seem to fire when the user selects an item in the DataGrid.</p>

<pre><code>// Style set in Resources of my control
&lt;Style x:Key="ConnectedStyle" TargetType="{x:Type Label}" 
BasedOn="{StaticResource FontAwesome}"&gt;
    &lt;Setter Property="Foreground" Value="Red" /&gt;    // I added this last 
minute thinking it might need to be initialized but still nothing.
    &lt;Style.Triggers&gt;
        &lt;DataTrigger Binding="{Binding Connected}" Value="True"&gt;
            &lt;Setter Property="Foreground" Value="Green" /&gt;
        &lt;/DataTrigger&gt;
        &lt;DataTrigger Binding="{Binding Connected}" Value="False"&gt;
            &lt;Setter Property="Foreground" Value="Red" /&gt;
        &lt;/DataTrigger&gt;
    &lt;/Style.Triggers&gt;
&lt;/Style&gt;


&lt;DataGrid Grid.Row="1" Grid.Column="1"
    ItemsSource="{Binding AvailablePorts}"
    SelectedItem="{Binding SelectedPort}"
    HorizontalAlignment="Stretch"
    SelectionMode="Single"
    Style="{StaticResource PlainGrid}"
    AutoGenerateColumns="False" ColumnHeaderHeight="30"&gt;
    &lt;DataGrid.Columns&gt;
        &lt;DataGridTemplateColumn Header=" Status" Width="55"&gt;
            &lt;DataGridTemplateColumn.CellTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;Label Style="{StaticResource ConnectedStyle}" 
                     Content="&amp;#xf111;" FontSize="12" Margin="5,0,0,0"
                     Padding="0" /&gt;
                &lt;/DataTemplate&gt;
            &lt;/DataGridTemplateColumn.CellTemplate&gt;
        &lt;/DataGridTemplateColumn&gt;
        &lt;DataGridTemplateColumn Header=" Port" Width="*"&gt;
            &lt;DataGridTemplateColumn.CellTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;TextBlock Text="{Binding Port}" /&gt;
                &lt;/DataTemplate&gt;
            &lt;/DataGridTemplateColumn.CellTemplate&gt;
        &lt;/DataGridTemplateColumn&gt;
    &lt;/DataGrid.Columns&gt;
&lt;/DataGrid&gt;
</code></pre>

<p>View Model</p>

<pre><code>public class EMSViewModel : ViewModelDetailBase&lt;EMSViewModel, EMSModel&gt;
{

    public ObservableCollection&lt;AvailablePortsModel&gt; AvailablePorts
    {
        get
        {
            return this.availablePorts;
        }

        private set
        {
            this.availablePorts = value;

            this.NotifyPropertyChanged(m =&gt; m.AvailablePorts);
        }
    }

    public AvailablePortsModel SelectedPort
    {
        get
        {
            return this.selectedPort;
        }

        set
        {
            this.selectedPort = value;

            this.NotifyPropertyChanged(m =&gt; m.SelectedPort);

            this.ConnectToPort();
        }
    }

    private void ConnectToPort()
    {
        // if the code (removed) evaluates to true, set the connected property to true.

        this.SelectedPort.Connected = true;

        this.NotifyPropertyChanged(m =&gt; m.AvailablePorts);
    }
}
</code></pre>

<p>Model</p>

<pre><code>namespace FastV.Models
{
    using SimpleMvvmToolkit;
    public class AvailablePortsModel : ModelBase&lt;AvailablePortsModel&gt;
    {
        private bool connected;

        private string port;

        public bool Connected
        {
            get
            {
                return this.connected;
            }

            set
            {
                this.connected = value;

                this.NotifyPropertyChanged(m =&gt; m.Connected);
            }
        }

        public string Port
        {
            get
            {
                return this.port;
            }

            set
            {
                this.port = value;

                this.NotifyPropertyChanged(m =&gt; m.Port);
            }
        }
    }
}
</code></pre>