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);
}
}