C# 从dataGrid到字符串的项
我正在寻找一种方法,将C# 从dataGrid到字符串的项,c#,xaml,datagrid,items,C#,Xaml,Datagrid,Items,我正在寻找一种方法,将SelectedItems从DataGrid转换成一个逗号分隔的字符串,该字符串可以传递到一个自动过程中 在我的代码中,我有一个DataGrid1,然后是第二个DataGrid2,它绑定到第一个列表中的SelectedItems。然后是绑定到第二个列表的项的文本框 这是我的DataGrid: <!-- items source based on selection of another data grid --> <DataGrid x:Name="MyD
SelectedItems
从DataGrid
转换成一个逗号分隔的字符串,该字符串可以传递到一个自动过程中
在我的代码中,我有一个DataGrid1
,然后是第二个DataGrid2
,它绑定到第一个列表中的SelectedItems
。然后是绑定到第二个列表的项的文本框
这是我的DataGrid
:
<!-- items source based on selection of another data grid -->
<DataGrid x:Name="MyDataGrid2" ItemsSource="{Binding ElementName=MyDataGrid,Path=SelectedItems}" AutoGenerateColumns="False" SelectionMode="Extended" Grid.Row="1" Height="Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn Header="Items" Width="Auto" >
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0},{1},{2};">
<Binding XPath="ProjectOrderNo"/>
<Binding XPath="Style" />
<Binding XPath="CustomerNo" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
结果是文本框
显示“(收集)”。我不确定如何将(集合)解析为逗号分隔的字符串。这是可以由转换器处理的吗?
字符串的格式应如下所示:
Orderno
,customerNo
,ItemNo
<代码>订单号
,客户号
,项目号
可以由StringBuilder
处理,但没有任何运气让项目在转换器中处理
这是我的第一次尝试:
public class SelectedItemsToString : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string[] arr = ((IEnumerable)value).Cast<object>()
.Select(x => x.ToString())
.ToArray();
var builder = new StringBuilder();
foreach (var item in arr)
{
builder.AppendFormat(",",item);
}
string result = builder.ToString();
return arr.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return "";
}
}
public类SelectedItemsToString:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
字符串[]arr=((IEnumerable)值).Cast()
.Select(x=>x.ToString())
.ToArray();
var builder=新的StringBuilder();
foreach(arr中的var项目)
{
builder.AppendFormat(“,”项);
}
字符串结果=builder.ToString();
返回arr.ToString();
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
返回“”;
}
}
在转换器中,为什么要将其强制转换为对象?您是否有一个属性为Orderno、customerNo、ItemNo的类;Orderno、customerNo、ItemNo?我没有用于属性的类。您绑定到MyDatagrid1的ItemsSourceProperty的是什么?MyDatagrid1绑定到从SQL web服务返回的数据。您从web服务获得的数据是列表还是什么列表的列表?请参见,ItemsSource属性应允许您绑定到集合或列表。因此,我建议您格式化从web服务(如ObservableCollection)获得的数据。其中order类具有您提到的属性。
public class SelectedItemsToString : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string[] arr = ((IEnumerable)value).Cast<object>()
.Select(x => x.ToString())
.ToArray();
var builder = new StringBuilder();
foreach (var item in arr)
{
builder.AppendFormat(",",item);
}
string result = builder.ToString();
return arr.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return "";
}
}