Start Debugging
2023-10-13 Обновлено 2023-11-05 dotnetdotnet-8wpf Edit on GitHub

WPF Индивидуальные состояния диалогов с помощью ClientGuid

Используйте свойство ClientGuid в .NET 8, чтобы сохранять индивидуальные состояния диалогов — размер окна, положение и последнюю используемую папку — для каждого WPF-диалога файлов отдельно.

Появившееся в .NET 8 свойство ClientGuid позволяет однозначно идентифицировать диалоги вроде OpenFileDialog и OpenFolderDialog, чтобы сохранять состояние — размер окна, положение, последнюю использованную папку — отдельно для каждого диалога.

Чтобы воспользоваться этим, задайте у своего диалога ClientGuid известным идентификатором до вызова метода ShowDialog().

static readonly Guid _id = new Guid("32bc5a4c-e28f-408a-8aca-e0b430fbc17c");

var dialog = new OpenFileDialog 
{
    ClientGuid = _id
};

dialog.ShowDialog();

Состояние диалога сохраняется между разными запусками приложения и даже между разными приложениями — важно лишь, чтобы ClientGuid был одним и тем же.

Примечание: убедитесь, что используете один и тот же идентификатор в разных экземплярах приложения. Не генерируйте Guid во время выполнения через Guid.NewGuid(): это будет давать новый Guid при каждом запуске, и состояние диалога будет сбрасываться. Вместо этого сохраните Guid как в примере выше или заведите класс KnownDialogs специально для хранения идентификаторов диалогов.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад