Почему не нажимается кнопка
Понятно, что надо сделать так, чтобы при старте фокус был установлен как на плагин silverlight, так и на текущий контрол. В моем случаи это TrainingGameScreen, контрол, который является представлением (View). Надеюсь, приведенный код не требует пояснений: public partial class TrainingGameScreen : UserControl
{
public TrainingGameScreen()
{
InitializeComponent();
Loaded += TrainingGameScreen_Loaded;
} private void TrainingGameScreen_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Browser.HtmlPage.Plugin.Focus();
this.Focus();
} }
Обычно этого было достаточно и в предыдущей версии программы всё сработало как надо. А вот в новой версии, которая уже написана на NET 4.0 пришлось не мало повозиться, чтобы отыскать почему фокус не устанавливается. Оказывается, чтобы всё заработало именно так, как планировалось, надо установить в XAML у контрола верхнего уровня, например UserControl, свойство IsTabStop в True. <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:clb="http://schemas.calabonga.com/"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Name="userControl"
mc:Ignorable="d"
IsTabStop="True">
...
</UserControl>
Вот теперь реально всё правильно работает, и даже с первого раза. Вроде мелочь, а приятно!Как нажать кнопку в MVVM
И в заключении статьи напиши, как нажатие кнопок обработать на стороне ViewModel. Тут неоценимую помощь мне оказала библиотека в которой есть EventToCommand, которая в свою очередь может принимать параметры и не просто, а параметры события привязки. В моем приложении уже есть команда, которые отрабатывают при нажатии на клик пользователя по кнопкам при выборе правильного ответа: #region команда MakeAnswerCommand /// <summary>
/// Команда MakeAnswerCommand обрабатывает нажатие пользователя на кнопку.
/// </summary>
public DelegateCommand<string> MakeAnswerCommand Read more: Мусорка - найди лучшее!
Понятно, что надо сделать так, чтобы при старте фокус был установлен как на плагин silverlight, так и на текущий контрол. В моем случаи это TrainingGameScreen, контрол, который является представлением (View). Надеюсь, приведенный код не требует пояснений: public partial class TrainingGameScreen : UserControl
{
public TrainingGameScreen()
{
InitializeComponent();
Loaded += TrainingGameScreen_Loaded;
} private void TrainingGameScreen_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Browser.HtmlPage.Plugin.Focus();
this.Focus();
} }
Обычно этого было достаточно и в предыдущей версии программы всё сработало как надо. А вот в новой версии, которая уже написана на NET 4.0 пришлось не мало повозиться, чтобы отыскать почему фокус не устанавливается. Оказывается, чтобы всё заработало именно так, как планировалось, надо установить в XAML у контрола верхнего уровня, например UserControl, свойство IsTabStop в True. <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:clb="http://schemas.calabonga.com/"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Name="userControl"
mc:Ignorable="d"
IsTabStop="True">
...
</UserControl>
Вот теперь реально всё правильно работает, и даже с первого раза. Вроде мелочь, а приятно!Как нажать кнопку в MVVM
И в заключении статьи напиши, как нажатие кнопок обработать на стороне ViewModel. Тут неоценимую помощь мне оказала библиотека в которой есть EventToCommand, которая в свою очередь может принимать параметры и не просто, а параметры события привязки. В моем приложении уже есть команда, которые отрабатывают при нажатии на клик пользователя по кнопкам при выборе правильного ответа: #region команда MakeAnswerCommand /// <summary>
/// Команда MakeAnswerCommand обрабатывает нажатие пользователя на кнопку.
/// </summary>
public DelegateCommand<string> MakeAnswerCommand Read more: Мусорка - найди лучшее!
0 comments:
Post a Comment