我有一個組合框,它通過一個轉換器綁定到一個雙精度集合,它只是用於從關聯屬性的名稱中定位集合。組合框位於PropertyTemplate的DataTemplate中。問題在於組合框不顯示當前系統區域中的值(即,使用','作爲小數點分隔符而不是'。')。屬性網格中的所有其他屬性都可以正確顯示(例如在文本框中)。WPF組合框文化沒有被應用到值
DataTemplate看起來像這樣,而ListComboBoxValuesConverter只返回一個雙精度集合。
<ComboBox
ItemsSource="{Binding Converter={StaticResource ListComboBoxValuesConverter},
RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}}}"
Text="{Binding Path=Value,
RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}},
Mode=TwoWay,
ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
</ComboBox>
感謝
編輯:
的解決方案,我想出來的是設置爲組合框的項目模板,並使用轉換器返回值是否爲正確格式的字符串。感覺這應該是沒有必要的,但是你去了!
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Converter={StaticResource FloatValueCultureConverter}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
轉換器將返回整個雙打集合,而不是分別單獨進行。我想如果需要的話,轉換器可以將它們作爲字符串集合返回,但是組合框看起來應該知道如何在正確的文化中顯示雙打。 – james
好吧,然後嘗試返回一個字符串列表和foreach一個使.ToString(文化)。檢查這是否有效,我認爲文化必須在綁定上設置。如果您定義了一個綁定,則您將替換默認綁定。 –
謝謝,這沒有工作,但因爲轉換器正在返回一個列表,當列表發生變化時,在組合框中沒有觀察到,而沒有關閉重新打開的視圖。我使用項目模板做了類似的事情。 – james