Ну, есть много способов получить пользовательскую строку, это зависит только от того, чего вы хотите достичь и как она работает в вашем пользовательском интерфейсе.
На скриншоте, который я видел, один способ, которым ядумаю, что вы могли бы сделать это без проблем, было бы вызвать TextBox
, чтобы быть видимым под кнопкой закладки при нажатии на нее.Поле будет иметь фокус на клавиатуре, чтобы оно было видимым, так что вы можете легко ввести желаемое название закладки, и после нажатия «return» оно вызовет обработчик события, который у вас уже есть, просто замените:
string bookmarkName = "Mon signet sur la page: " +
PdfViewer.GetCurrentPage().ToString();
на
txtBookmarkName.Text + ": " +
PdfViewer.GetCurrentPage().ToString();
txtBookmarkName.Text = string.Empty();
Некоторые примеры кода ниже:
XAML для текстового поля:
<TextBox x:Name"txtBookmarkName" Margin="0,0,0,0" KeyDown="TxtBookmarkName_OnKeyDown" Visibility="Hidden"/>
(Значения полей - это заполнители, вам понадобитсячтобы изменить их, чтобы расположить и изменить размер поля в соответствии с вашим пользовательским интерфейсом)
Обработчик событий для текстового поля:
private void TxtBookmarkName_OnKeyDown(object sender, KeyEventArgs e)
{
txtBookmarkName.Visible = false;
if (e.Key == Key.Return)
{
//Run bookmark_Click Event Handler Code
}
}
(Вы можете добавить условие, если Escape нажата наотмените текстовое поле, а также событие, если текстовое поле потеряло фокус)
Код для кнопки закладки, чтобы TextBox можно было сделать видимым и получить фокус:
private void Button_Click(object sender, RoutedEventArgs e)
{
txtBookmarkName.Visibility = Visibility.Visible;
txtBookmarkName.Focus();
}