2017-02-09 5 views
1

Я разрабатывающих приложения в Xamarin.Forms и я использую Editor управления, как так:Как изменить поведение OnMouseHover элемента управления редактора в Xamarin.Forms

Я бегу это на UWP и когда Я наводил указатель мыши на элемент управления, цвет фона инвертирован на черный. см Изображение ниже:

Нецеленаправлен enter image description here

Mouse Over enter image description here

Ориентированные enter image description here

Как вы можете видеть, довольно ужасно.

У меня есть чувство, что это может быть связано с this ThemeResource Style я также можно увидеть, что на платформе WinRT (я думаю, что тот же элемент управления используется для UWP) it is definitely applying that style, но я не знаю достаточно о Styles сказать Это может быть связано с this line in particular

ответ

2

Действительно, проблема в том, где вы ожидали, что это будет. В вашем случае VisualState PointerOver анимирует кисть границы и непрозрачность фона для новых значений. Если вы хотите сохранить фон как есть, просто удалите часть, указанную в приведенном ниже коде.

Я бы, вероятно, сохранил подсветку рамки, чтобы пользователь все еще видел, что элемент управления сфокусирован. Однако вы также можете удалить это (фактически все визуальное состояние), если хотите.

<VisualState x:Name="PointerOver"> 
    <Storyboard> 
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement"> 
     <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightChromeAltLowBrush}" /> 
    </ObjectAnimationUsingKeyFrames> 

    <!-- Remove the following --> 
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement"> 
     <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextControlBackgroundHoverOpacity}" /> 
    </ObjectAnimationUsingKeyFrames> 
    <!-- until here --> 

    </Storyboard> 
</VisualState> 
+0

Это означало бы, имея заказную сборку 'Xamain.Forms' есть способ я могу установить значение' TextControlBackgroundHoverOpacity' в моем 'App.xaml' изменить поведение? – user1

+0

@ user1 Правильно, не понял, что это внутренний код Xamarin.Forms. Затем я бы обновил значение TextControlBackgroundHoverOpacity в специальном коде UWP. Что-то вроде этого: Windows.UI.Xaml.Application.Current.Resources ["TextControlBackgroundHoverOpacity"] = 1; Вы также можете удалить VisualState программно, но я нахожусь на телефоне и не могу проверить его прямо сейчас. – hankide

+0

Возможно ли заменить ресурс в xaml? – user1

Смежные вопросы