Combobox绑定和stringFormat

时间:2014-01-28 18:29:14

标签: c# .net wpf xaml wpf-controls

我有一个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'”被完全忽略,这很奇怪,因为相同的格式适用于没有问题的文本块。

1 个答案:

答案 0 :(得分:4)

仅当目标属性类型为Binding.StringFormat时,

string才有效。这就是它与string TextBlock.Text一起使用的原因,但不适用于object ComboBox.SelectedValue。通常,如果要格式化绑定的结果,可以使用简单的实现创建自定义StringFormatConverter : IValueConverter类,并在Binding.Converter中使用它。

在您的情况下,您应该使用ComboBox.ItemStringFormat代替。