我正在尝试将我的 ListPicker 绑定到 ObservableCollection 中的 TimeSpan.Days 属性,我还使用转换器来格式化字符串,但我无法使绑定工作。我没有收到任何错误,但 ListPicker 没有任何项目,并且我的转换器中的代码没有被执行(断点永远不会被命中)。
我发现如果我像这样绑定到集合:
ItemsSource="{Binding Converter={StaticResource intervalConverter}}"
然后我的转换器中的代码确实被执行,但 Convert 函数的“值”参数是整个集合而不是集合的单个项目。
谁能解释为什么我的绑定不起作用?
这是我的 XAML:
<toolkit:ListPicker x:Name="intervalPicker"
ExpansionMode="ExpansionAllowed"
ItemsSource="{Binding Days, Converter={StaticResource intervalConverter}}"/>
这是我背后的代码:
public partial class MainPage : PhoneApplicationPage
{
ObservableCollection<TimeSpan> _intervals;
// Constructor
public MainPage()
{
InitializeComponent();
PopulatePicker();
}
private void PopulatePicker()
{
//Insulin Interval Picker
_intervals = new ObservableCollection<TimeSpan>();
_intervals.Add(new TimeSpan(1, 0, 0, 0));
_intervals.Add(new TimeSpan(2, 0, 0, 0));
_intervals.Add(new TimeSpan(3, 0, 0, 0));
intervalPicker.DataContext = _intervals;
}
}
public class IntervalConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int interval = (int)value;
if(interval > 1)
return string.Format("{0 days}", interval);
else
return string.Format("{0 day}", interval);
}
}