我有一个WPF组合框
<ComboBox SelectedValue="{Binding ElementName=Ctrl, Path=Day, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat='00'}"
ItemsSource="{Binding ElementName=Ctrl, Path=AvailableDays, Mode=OneWay, StringFormat='00'}"
IsEditable="True" Grid.Column="0" />
是数据绑定到这些属性
public int? Day {
get { return _day; }
set {
if (_day != value) {
_day = value;
OnPropertyChanged();
}
}
}
public IEnumerable<int> AvailableDays {
get { return _availableDays ?? (_availableDays = Enumerable.Range(1, 31)); }
}
绑定有效。但我的问题是形成价值观。我希望天数&lt; 10与前导零结合。但我的“StringFormat = '00'”被完全忽略,这很奇怪,因为相同的格式适用于没有问题的文本块。
答案 0 :(得分:4)
Binding.StringFormat
时, string
才有效。这就是它与string TextBlock.Text
一起使用的原因,但不适用于object ComboBox.SelectedValue
。通常,如果要格式化绑定的结果,可以使用简单的实现创建自定义StringFormatConverter : IValueConverter
类,并在Binding.Converter
中使用它。
在您的情况下,您应该使用ComboBox.ItemStringFormat
代替。