C# 组合框绑定和字符串格式
我有一个WPF组合框C# 组合框绑定和字符串格式,c#,.net,wpf,xaml,wpf-controls,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=
<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)); }
}
公共int?一天{
获取{return\u day;}
设置{
如果(_day!=值){
_天=价值;
OnPropertyChanged();
}
}
}
公共IEnumerabledays{
获取{return _availableDays???(_availableDays=Enumerable.Range(1,31));}
}
装订工作。但我的问题是价值观的形成。我想要天
绑定。只有当目标属性类型为string
时,StringFormat
才有效。这就是为什么它适用于字符串TextBlock.Text
,但不适用于对象组合框.SelectedValue
。通常,如果要格式化绑定的结果,可以创建一个自定义的StringFormatConverter:IValueConverter
类,该类的实现非常简单,并在binding.Converter
中使用
在您的情况下,应该改用
ComboBox.ItemStringFormat
。您是否尝试过在ComboBox
上设置ItemStringFormat=“00”
?我在某个地方读到,只有在ComboBox
上设置IsEditable=“False”
时,它才有效。所以在你的情况下,它不应该起作用。不过还是试试看吧。看看这个:@SuperOli:正如你所说的。ItemStringFormat适用于所有下拉项。仅当IsEditable=“False”
时,它才适用于所选项目。谢谢