Ваш текущий код принимает каждую пару, а затем для каждого под прямоугольника размера row x col
устанавливает площадь прямоугольника равной 1. Это действительно близко. Вам просто нужно установить один раз для каждой заказанной пары:
for(i = 0; i < 6; i++) {
row = matrixAin[i][0];
col = matrixAin[i][1];
matrixA[row - 1][col - 1] = 1;
}
Вы могли попытаться использовать ValueConverter (cf. Интерфейс IValueConverter), чтобы поменять струны, которые должны быть отображены в поле списка самостоятельно. Таким образом, в реализации метода Преобразования Вы протестировали бы, если строки длиннее, чем свободное место и затем изменяют их на... плюс правая сторона строки.
К сожалению, это не возможно в WPF сегодня, как Вы видите из документации.
(Я раньше работал в Microsoft над WPF, это было функцией, мы, к сожалению, не нашли время для выполнения - не уверенный, если это планируется будущую версию),
Вот пример эффективного обрезания текста с помощью рекурсивного логарифмического алгоритма:
private static string ClipTextToWidth(
TextBlock reference, string text, double maxWidth)
{
var half = text.Substring(0, text.Length/2);
if (half.Length > 0)
{
reference.Text = half;
var actualWidth = reference.ActualWidth;
if (actualWidth > maxWidth)
{
return ClipTextToWidth(reference, half, maxWidth);
}
return half + ClipTextToWidth(
reference,
text.Substring(half.Length, text.Length - half.Length),
maxWidth - actualWidth);
}
return string.Empty;
}
Предположим, у вас есть поле TextBlock
с именем textBlock
, и вы хотите обрезать текст в нем с заданной максимальной шириной с добавленным многоточием. Следующий метод вызывает ClipTextToWidth
, чтобы установить текст для поля textBlock
:
public void UpdateTextBlock(string text, double maxWidth)
{
if (text != null)
{
this.textBlock.Text = text;
if (this.textBlock.ActualWidth > maxWidth)
{
this.textBlock.Text = "...";
var ellipsisWidth = this.textBlock.ActualWidth;
this.textBlock.Text = "..." + ClipTextToWidth(
this.textBlock, text, maxWidth - ellipsisWidth);
}
}
else
{
this.textBlock.Text = string.Empty;
}
}
Надеюсь, это поможет!