Вы можете добиться этого с помощью Jquery и позвоните по нижеприведенной ссылке при загрузке страницы.
var htmlhead = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
var$g=jQuery.noConflict();$g(function({$g('head').append(htmlhead);$g('head').append('<linkrel="stylesheet"href="yourstaticresources"type="text/css"media="all"/>');$g('body').append('Any dialog box');$g("#dialog").dialog({autoOpen: true,buttons: {'{!$Label.Yes}': function() {ifYes();},'{!$Label.No}': function() {$g(this).dialog("close");}}});})} else{ifNo();}}
Откроется диалоговое окно с Yes or No
. Обрабатывайте свою логику соответственно
Я нашел это на silverlight.net и смог заставить это работать на меня путем добавления вызова к Системе. Windows. Браузер. HtmlPage. Плагин. Фокус () до вызова RegularTextBox. Фокус ():
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Browser.HtmlPage.Plugin.Focus();
RegularTextBox.Focus();
}
Вы уверены, что действительно не получаете фокус? Существует известная ошибка в бете 2, где Вы получите фокус и сможете ввести, но Вы не получите каре или границу. Обходное решение должно назвать UpdateLayout () на текстовом поле прямо перед вызовом Фокуса ().
Я забыл одну вещь... Я не нашел способ вызвать фокус к Вашему приложению Silverlight на странице надежно (это будет работать над некоторыми браузерами а не над другими).
, Таким образом, может случиться так, что само приложение Silverlight не фокусируется. Я обычно обманываю пользователя в нажатие кнопки или чего-то подобного, прежде чем я начну ожидать, что ввод с клавиатуры удостоверится, что приложение Silverlight фокусируется.
Я попытался бы добавить DispatcherTimer на событии UserLoaded, которое выполняет метод Фокуса несколько миллисекунд после того, как целое управление загрузилось; возможно, проблема там.
Вы кодируете для установки фокуса, корректно с тех пор, если Вы добавляете кнопку, которая называет тот же код, это работает отлично:
<StackPanel Width="150" VerticalAlignment="Center">
<TextBox x:Name="RegularTextBox" IsTabStop="True" />
<Button Click="UserControl_Loaded">
<TextBlock Text="Test"/>
</Button>
</StackPanel>
, Таким образом, я принимаю, это - что-то, чтобы сделать с Фокусом () требование некоторого взаимодействия с пользователем. Я не мог заставить это работать с Событием mouseMove на UserControl, но помещением события KeyDown для установки работ фокуса (хотя шаблон не обновляет к сфокусированному шаблону).
Width="400" Height="300" Loaded="UserControl_Loaded" KeyDown="UserControl_KeyDown">
Походит на ошибку мне....
Для приложений вне браузера System.Windows.Browser.HtmlPage.Plugin.Focus ();
не существует.
См. мой вопрос здесь для других идей.
Спасибо Santiago Palladino Dispatcher работал для меня идеально. Что я делаю:
this.focus (); потом Dispatcher.begininvoke (() => {tbnewtext.focus ();});
Plugin.Focus();
у меня не работали.
Вызов
Dispatcher.BeginInvoke(() => { tbNewText.Focus();});
из события загрузки сработал.