Я не специалист по форматированию TimeSpan
, поэтому я не могу точно сказать, почему они дают одинаковый результат, но вы можете прочитать об этом здесь: Строки пользовательского формата TimeSpan
Конечно, каждый не работает на другом.
Они работают одинаково, дело только в том, что вы должны использовать одну обратную косую черту в двойных кавычках. Следующие
<Binding Path="MinTime"
StringFormat="hh\\:mm\\:ss"
TargetNullValue=" --- "/>
выходит на hh\\\\:mm\\\\:ss
. Поэтому вместо этого вы должны написать
<Binding Path="MinTime"
StringFormat="hh\:mm\:ss"
TargetNullValue=" --- "/>
Следующие два Bindings
должны давать одинаковый результат
<DataGridTextColumn Header="Max Time" IsReadOnly="True"
Binding="{Binding Path=MaxTime,
StringFormat=hh\\:mm\\:ss,
TargetNullValue=' --- '}"/>
<DataGridTextColumn Header="Min Time" IsReadOnly="True">
<DataGridTextColumn.Binding>
<Binding Path="MinTime"
StringFormat="hh\:mm\:ss"
TargetNullValue=" --- "/>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
И следующие два
<DataGridTextColumn Header="Max Time" IsReadOnly="True"
Binding="{Binding Path=MaxTime,
StringFormat={}{0:hh':'mm':'ss},
TargetNullValue=' --- '}"/>
<DataGridTextColumn Header="Min Time" IsReadOnly="True">
<DataGridTextColumn.Binding>
<Binding Path="MinTime"
StringFormat="{}{0:hh':'mm':'ss}"
TargetNullValue=" --- "/>
</DataGridTextColumn.Binding>
</DataGridTextColumn>