Items=new ObservableCollection<double?>{}
null 許容値のコレクション ( ) をデータグリッドにバインドしようとしています。以下は私にエラーを与えます
値を null にすることはできません。パラメータ名:キー
<DataGrid Name="pointList" ItemsSource="{Binding Path=Value.Items,Converter={l:SelectableListArrayToListConverter}}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Value" Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
コンバーターを使用しようとすると、次のエラーが表示されます。双方向バインディングにはパスまたは XPath が必要です。
<DataGrid Name="pointList" ItemsSource="{Binding Path=Value.Items,Converter={l:SelectableListArrayToListConverter}}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Value" Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
public class SelectableListArrayToListConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is IEnumerable)
{
List<string> list = new List<string>();
foreach(var item in value as IEnumerable )
{
if (item == null)
list.Add("NON");
else
list.Add(item.ToString());
}
//Two-way binding requires Path or XPath
return list;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
上記のエラーは、双方向バインディングが List list = new List(); で機能していないためだと思います。
Itemssource が設定された後、DataGridTextColumn Binding が設定される前に、itemssource が行を構築するときにエラーが発生していると思います。
私はこれまでのところ運が悪いので、この問題の解決策を見つけるために広範囲に試みました.
この投稿に問題がある場合はお知らせください。修正します。
ありがとう。