2011-10-02 27 views
6

Tôi sẽ phát điên. Ai đó có thể giải thích cho tôi lý do tại sao các định dạng chuỗi định dạng cùng một điều rất khác nhau?Tại sao các định dạng chuỗi khác nhau trên TimeSpan trên XAML?

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

Tất nhiên, mỗi khóa không hoạt động với nhau.

EDIT: Tôi càng làm việc với WPF càng cảm thấy nó không phải là một sản phẩm đủ trưởng thành.

Trả lời

11

Tôi không phải chuyên gia trong định dạng TimeSpan vì vậy tôi không thể nói cho bạn biết chính xác lý do tại sao họ tạo ra kết quả tương tự nhưng bạn có thể đọc lên về nó ở đây: Custom TimeSpan Format Strings

Tất nhiên mỗi người không làm việc trên cai khac.

Chúng hoạt động theo cùng một cách, điều chỉ là bạn nên sử dụng một dấu gạch chéo ngược trong dấu ngoặc kép. Sau đây

<Binding Path="MinTime" 
     StringFormat="hh\\:mm\\:ss" 
     TargetNullValue=" --- "/> 

cho ra hh\\\\:mm\\\\:ss. Vì vậy, thay vào đó bạn nên viết

<Binding Path="MinTime" 
     StringFormat="hh\:mm\:ss" 
     TargetNullValue=" --- "/> 

Sau đây hai Bindings nên sản xuất cùng một kết quả

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

Và vì thế nên sau hai

<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, tôi sẽ nói rằng tôi đã thử \ : nhưng bây giờ tôi đã cố gắng một lần nữa và làm việc của nó ... lạ ... cảm ơn anyway. –

+0

@SoMos: Vâng tôi biết, nó vui vẻ :) –

Các vấn đề liên quan