Неправильная высота окна TaskDialog при указании значка

ИЗМЕНИТЬ:

Я исправил исходники пакета кода и загрузил обновленный пакет NuGet:

https://www.nuget.org/packages/WindowsAPICodePack-Shell/

Спасибо dmex за исправление ошибки: http://archive.msdn.microsoft.com/WindowsAPICodePack/WorkItem/View.aspx?WorkItemId=108

Как видите, проблема решена и нет необходимости использовать громоздкий синтаксис события Opened:

введите здесь описание изображения


При указании значка высота диалога неверна; последняя командная ссылка не полностью видна:

введите здесь описание изображения

У вас есть идея, как решить эту проблему?

Код, используемый для отображения этого диалога:

var dialog = new TaskDialog
{
    Caption = Title,
    InstructionText = "Some files added are already in the collection.",
    Text = "They have been skipped."
};
dialog.Opened += (s1, e1) => { dialog.Icon = TaskDialogStandardIcon.Warning; };

var linkContinue = new TaskDialogCommandLink("Continue", "Continue", string.Empty);
linkContinue.Click += (s2, e2) =>
{
    var s = (TaskDialogCommandLink)s2;
    var taskDialog = (TaskDialog)(s.HostingDialog);
    taskDialog.Close();
};
dialog.Controls.Add(linkContinue);

var linkView = new TaskDialogCommandLink("View", "View these files", string.Empty);
linkView.Click += (s3, e3) =>
{
    var s = (TaskDialogCommandLink)s3;
    var taskDialog = (TaskDialog)(s.HostingDialog);
    taskDialog.Close();
    var window1 = new Window1 { Text = files, Title = Title };
    window1.ShowDialog();
};
dialog.Controls.Add(linkView);

dialog.Show();

person aybe    schedule 19.01.2014    source источник
comment
@Aybe... Есть идеи, почему GetProperty(SystemProperties.System.Photo.DateTaken) в API не возвращает строку или DateTime? и все, что он возвращает, что я не могу понять, НЕ конвертируется в DateTime   -  person dinotom    schedule 24.04.2017
comment
и из какой библиотеки исходит объект Window1, я не могу ее найти.   -  person dinotom    schedule 25.04.2017


Ответы (1)


Попробуйте еще раз назначить "InstructionText" в .Opend (похоже, проблема исправлена ​​и в 1.1.0.0).

        var dialog = new TaskDialog
        {
            Caption = Title,
            InstructionText = "Some files added are already in the collection.",
            Text = "They have been skipped."
        };

        dialog.Opened += (s1, e1) =>
        {
            dialog.Icon = TaskDialogStandardIcon.Warning;
            dialog.InstructionText = dialog.InstructionText; // < seems to work
        };
person Nikolay    schedule 19.01.2014
comment
На самом деле в библиотеке есть ошибка, препятствующая такому синтаксису: значок не будет отображаться, поэтому это сделано в Opened. - person aybe; 19.01.2014
comment
Где вы получили пакет кода API? Мой от Nuget (версия 1.1.0.0). - person aybe; 19.01.2014
comment
Nuget, VS2012 (NET 4.5), Windows7APICodePack 1.0.0.0 (тот, который исходит от Microsoft) - person Nikolay; 19.01.2014
comment
Похоже, в 1.0.0.0 у вас нет этой проблемы с иконками - это новое для 1.1.0.0 - person Nikolay; 19.01.2014
comment
Это верно, но эта версия не предлагает CommonOpenFileDialog, так что я облажался. Обновите свой ответ, и я отмечу его как принятый. - person aybe; 19.01.2014
comment
Похоже, установка dialog.InstructionText в обработчике .Opened во второй раз (до того же значения) также исправляет его для 1.1 (заставляет диалог пересчитывать его размер) - person Nikolay; 19.01.2014
comment
Исправлена ​​проблема со значком: archive.msdn.microsoft. com/WindowsAPICodePack/WorkItem/ - person aybe; 19.01.2014
comment
Я сделал обновленный пакет NuGet с исправленной ошибкой, ссылка находится в моем редактировании. - person aybe; 19.01.2014