WPF DataTemplate.Triggers don't evaluate
<p>Trying a simple DataTemplate implementation that doesn't work for some reason. It seems like the Bindings inside the conditions are never evaluated, even on the initial load. Any input is appreciated. </p>

<pre><code> &lt;DataTemplate x:Key="ReadinessCellTemplate"&gt;
        &lt;StackPanel Orientation="Horizontal"&gt;
            &lt;Grid&gt;
                &lt;Grid.Style&gt;
                    &lt;Style TargetType="Grid"&gt;
                        &lt;Setter Property="Visibility" Value="Collapsed" /&gt;
                        &lt;Style.Triggers&gt;
                            &lt;DataTrigger Binding="{Binding Readiness}" Value="{x:Static db:ReadinessState.DEVELOPMENT}"&gt;
                                &lt;Setter Property="Visibility" Value="Visible" /&gt;
                            &lt;/DataTrigger&gt;
                        &lt;/Style.Triggers&gt;
                    &lt;/Style&gt;
                &lt;/Grid.Style&gt;
                &lt;Ellipse Width="14" Height="14" HorizontalAlignment="Center" VerticalAlignment="Center" Fill="#FF1B468A" /&gt;
                &lt;TextBlock TextAlignment="Center" Text="D" Foreground="White" /&gt;
            &lt;/Grid&gt;

            &lt;Path x:Name="PART_ShapePath" Height="14" Width="14" Fill="#FF1B468A"&gt;
                &lt;Path.ToolTip&gt;
                    &lt;ToolTip x:Name="PART_StatusToolTip" /&gt;
                &lt;/Path.ToolTip&gt;
            &lt;/Path&gt;
        &lt;/StackPanel&gt;

        &lt;DataTemplate.Triggers&gt;
            &lt;MultiDataTrigger&gt;
                &lt;MultiDataTrigger.Conditions&gt;
                    &lt;Condition Binding="{Binding LastModifiedTimestamp, Converter={StaticResource IsNullConverter}, diag:PresentationTraceSources.TraceLevel=High}" Value="True" /&gt;
                    &lt;Condition Binding="{Binding LastFailedBuildTimestamp, Converter={StaticResource IsNullConverter}}" Value="True" /&gt;
                &lt;/MultiDataTrigger.Conditions&gt;
                &lt;Setter TargetName="PART_ShapePath"  Property="Visibility" Value="Collapsed" /&gt;
            &lt;/MultiDataTrigger&gt;

            &lt;DataTrigger Binding="{Binding LastFailedBuildTimestamp, Converter={StaticResource IsNullConverter}}" Value="False"&gt;

                &lt;Setter TargetName="PART_ShapePath" Property="Visibility" Value="Visible" /&gt;
                &lt;Setter TargetName="PART_ShapePath" Property="Data" Value="M9.0 0.0L0.0 16.0L18.0 16.0L9.00004001084 0.0ZM9.90797917744 14.0L8.0 14.0L8.0 12.0L10.0 12.0L10.0 14.053956628ZM9.43709923716 11.0L8.48917922657 11.0L8.0 6.87502426276L8.0 4.0L10.0 4.0L10.0 6.87502426276L9.43709923716 11.3799755923Z" /&gt;

                &lt;Setter TargetName="PART_StatusToolTip" Property="Content"&gt;
                    &lt;Setter.Value&gt;
                        &lt;StackPanel&gt;
                            &lt;StackPanel Orientation="Vertical"&gt;
                                &lt;TextBlock Text="{Binding LastFailedBuildTimestamp, TargetNullValue=UNSPECIFIED, StringFormat={}When: {0}}" /&gt;
                                &lt;TextBlock Text="{Binding LastBuildError, TargetNullValue=UNSPECIFIED, StringFormat={}Why: {0}}" /&gt;
                            &lt;/StackPanel&gt;
                        &lt;/StackPanel&gt;
                    &lt;/Setter.Value&gt;
                &lt;/Setter&gt;
            &lt;/DataTrigger&gt;

            &lt;MultiDataTrigger&gt;
                &lt;MultiDataTrigger.Conditions&gt;
                    &lt;Condition Binding="{Binding LastModifiedTimestamp, Converter={StaticResource IsNullConverter}}" Value="False" /&gt;
                    &lt;Condition Binding="{Binding LastFailedBuildTimestamp, Converter={StaticResource IsNullConverter}}" Value="True" /&gt;
                &lt;/MultiDataTrigger.Conditions&gt;
                &lt;Setter TargetName="PART_ShapePath"  Property="Visibility" Value="Visible" /&gt;
                &lt;Setter TargetName="PART_ShapePath" Property="Data" Value="M 0,11 0,14 3.0056497,14 11.706214,5.220339 8.7005652,2.2146893 0,11 0,11 Z M 14,2.9265537 C 14.316384,2.6101695 14.316384,2.1355932 14,1.819209 L 12.180791,0 C 11.864407,-0.31638417 11.38983,-0.31638417 11.073446,0 L 9.6497174,1.4237288 12.655366,4.4293786 14,3 14,3 Z" /&gt;
                &lt;Setter TargetName="PART_StatusToolTip" Property="Content"&gt;
                    &lt;Setter.Value&gt;
                        &lt;StackPanel&gt;
                            &lt;StackPanel Orientation="Vertical"&gt;
                                &lt;TextBlock Text="{Binding LastModifiedTimestamp, TargetNullValue=UNSPECIFIED, StringFormat={}When: {0}}" /&gt;
                                &lt;TextBlock Text="{Binding LastModifiedBy, TargetNullValue=UNKNOWN, StringFormat={}Modified by: {0}}" /&gt;
                            &lt;/StackPanel&gt;
                        &lt;/StackPanel&gt;
                    &lt;/Setter.Value&gt;
                &lt;/Setter&gt;
            &lt;/MultiDataTrigger&gt;
        &lt;/DataTemplate.Triggers&gt;
    &lt;/DataTemplate&gt;
</code></pre>

<p><strong>EDIT:</strong> The Datacontext is set to the object with the following properties' definitions:</p>

<pre><code>public ReadinessState Readiness
{
    get { return _payload.Readiness; }
    set
    {

        bool t = _payload.Readiness != value;
        if (t)
        {
            _payload.Readiness = value;
            OnPropertyChanged("Readiness");
        }
    }
}
public DateTimeOffset? LastModifiedTimestamp
{
    get
    {
        return _payload?.LastModifiedTimestamp;
    }
    set
    {

        if (_payload != null &amp;&amp; _payload.LastModifiedTimestamp != value)
        {
            LastModifiedBy = LockingSession?.Username;
            _payload.LastModifiedTimestamp = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LastModifiedTimestamp"));
        }
    }
}
public DateTimeOffset? LastFailedBuildTimestamp
{
    get
    {
        return _payload?.LastFailedBuildTimestamp;
    }
    set
    {

        if (_payload != null &amp;&amp; _payload.LastFailedBuildTimestamp != value)
        {
            _payload.LastFailedBuildTimestamp = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LastFailedBuildTimestamp"));
        }
    }
}

public string LastModifiedBy
{
    get
    {
        return _payload?.LastModifiedBy;
    }
    private set
    {

        if (_payload != null &amp;&amp; _payload.LastModifiedBy != value)
        {
            _payload.LastModifiedBy = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LastModifiedBy"));
        }
    }
}


public string LastBuildError
{
    get
    {
        return _payload?.LastBuildError;
    }
    set
    {

        if (_payload != null &amp;&amp; _payload.LastBuildError != value)
        {
            _payload.LastBuildError = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LastBuildError"));
        }
    }
}
</code></pre>

<p>The binding to Readiness works fine, but LastModifiedTimestamp isn't. IsNullConverter never gets called.</p>