2011-10-02 52 views
6

我要瘋了。有人可以解釋爲什麼這些格式化相同事物的字符串格式如此不同嗎?爲什麼XAML上的TimeSpan上的這些不同的字符串格式?

<DataGridTextColumn Header="Max Time" IsReadOnly="True" Binding="{Binding MaxTime, StringFormat=hh\\:mm\\:ss, TargetNullValue=---}"> 

<DataGridTextColumn Header="Min Time" IsReadOnly="True"> 
    <DataGridTextColumn.Binding> 
     <Binding Path="MinTime" StringFormat="{}{0:hh':'mm':'ss}" TargetNullValue=" --- "/> 
    </DataGridTextColumn.Binding> 
</DataGridTextColumn> 

當然,每一個都不能在另一個上工作。

編輯:我使用WPF工作越多,我覺得它不是一個成熟的產品。

回答

11

我在格式化TimeSpan沒有專家,所以我不能告訴你到底它們爲什麼會產生相同的結果,但你可以約在這裏讀了起來:Custom TimeSpan Format Strings

當然每一個不工作的另一個。

它們的工作原理是一樣的,只是你應該在雙引號內使用一個反斜槓。以下

<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> 
+0

MMMMM,我要說的是,我試過\ :但現在我再試一次,它的工作......怪異......謝謝。 –

+0

@SoMos:是的,我知道,它發生了:) –

相關問題