StringArrayConverter类里。
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace BooksDemo
{
[ValueConversion(typeof(string[]), typeof(String))]
public class StringArrayConverter:IValueConverter
{
public object Convert(object value,Type targetType,object parameter,CultureInfo culture)
{
if (value == null) return null;
string[] stringCollection = (string[])value;
string separator = (parameter == null).ToString();
return String.Join(separator,stringCollection);
}
public object ConvertBack(object value,Type targetType,object parameter,CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
BooksDemo.BookUC.xmal 自定义控件
<UserControl x:Class="BooksDemo.BookUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:BooksDemo"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="500">
<UserControl.Resources>
<local:StringArrayConverter x:Key="stringArrayConverter"/>
<ObjectDataProvider x:Key="books" ObjectType="local:BookFactory" MethodName="GetBooks"/>
</UserControl.Resources>
<Grid>
<TextBlock Margin="5" Grid.Row="3" Grid.Column="1" Text="{Binding Authors,Converter={StaticResource stringArrayConverter},ConverterParameter=', '}" TextWrapping="Wrap" VerticalAlignment="Center"/>
</Grid>
Book.cs 类
public class Book
{
public string Title { get; set; }
public string Publisher { get; set; }
public string Isbn { get; set; }
private readonly List<string> authors = new List<string>();
public string[] Authors
{
get
{
return authors.ToArray();
}
}