WPF DataGrid, привязанный к DataTable, получает вырезанный текст - PullRequest
0 голосов
/ 20 ноября 2018

Я отображаю DataGrid, который привязан к DataTable:

Моя проблема в том, что для значения первого столбца каждой строки текст обрезается.

Я не уверенесли это потому, что ширина столбца слишком мала (кажется, что это не так) или по какой-то другой причине.

Сначала я хотел бы знать, почему это происходит?

Во-вторых,есть ли способ динамически установить ширину каждого столбца из кода?

Как видите, «Альфред Хичкок» отображается как «Альфред Хичко»

enter image description here

Вот xaml:

<DataGrid x:Name="_dataGrid" 
                      IsHitTestVisible="False"
                      Background="Transparent"
                      Margin="20"
                      CanUserAddRows="False"
                      CanUserDeleteRows="False"
                      IsReadOnly="True"
                      ItemsSource="{Binding StatisticsDataTableView}"
                      HorizontalContentAlignment="Left" VerticalContentAlignment="Bottom" HorizontalAlignment="Center" VerticalAlignment="Center">

Вот свойство:

public DataView StatisticsDataTableView
{
        get { return _statisticsDataTableView; }
        set
        {
            _statisticsDataTableView = value; 
            OnPropertyChanged();
        }
}

И в коде я создаю таблицу динамически так:

_dataTable = new DataTable();

var column = _dataTable.Columns.Add("Sprints:");

foreach (var sprint in Plan.Sprints)
{
    _dataTable.Columns.Add(sprint.SprintNumber.ToString());
}

List<string> sinsglePerformers = new List<string>();
foreach (var performer in _settings.Performers)
{
    if (performer.Name == "All" || performer.Name == "Unassigned" || !performer.IsEnabled)
    {
        continue;
    }

    var splitedPerformers = performer.Name.Split(',');


    for (int i = 0; i < splitedPerformers.Length; i++)
    {
        if (!sinsglePerformers.Contains(splitedPerformers[i]))
        {
            sinsglePerformers.Add(splitedPerformers[i]);
        }
    }
}

foreach (var performer in sinsglePerformers)
{
    var newRow = _dataTable.NewRow();
    _dataTable.Rows.Add(newRow);
    newRow[0] = performer;

    int sprintIndex = 1;
    foreach (var jaraSprint in Plan.Sprints)
    {
        var tasks = jaraSprint.Tasks.Where(t => t.Performers.Any(p => p.Name == performer));
        double days = tasks.Sum(jaraTask => jaraTask.TimeInDays);

        newRow[sprintIndex] = $"{days*100/(_plan.WeeksInSprint*5):0.}" + "%";

        sprintIndex++;
    }
}

StatisticsDataTableView = _dataTable.AsDataView();

Любая идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...