Действительно ли фальсифицирование является возможным наведением мыши WPF?

Вы должны использовать опцию withCredentials при отправке вашего запроса ajax на ваш http://server.com , и ваш server.com должен иметь для Access-Control-Allow-Credentials значение true.

Example code in Node.JS server:

var cors = require('cors');
var corsOptions = {
    origin: '*',
    credentials: true };

app.use(cors(corsOptions));

Подробнее об этом здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

[ 111]

Подробнее об этом здесь: https://angular.io/api/http/RequestOptions

Также проверьте это : https : //github.com/angular/angular/issues/24283 - похоже, у определенной версии Angular были проблемы с этим флагом, поэтому, если вы не используете более свежую версию, вам может понадобиться установить заголовок явно.

Причина этого в том, что, если сервер явно не скажет клиенту «Я приму файлы cookie (установленные ранее в моем домене), переданные другим доменом» - принятие файлов cookie будет безопасным выпуск. Подробнее здесь: https://en.wikipedia.org/wiki/Cross-site_request_forgery

9
задан Jippers 21 January 2009 в 00:33
поделиться

2 ответа

Я не думаю, что возможно фальсифицировать событие, но можно вынудить кнопку представить себя, как будто это имело MouseOver.

private void tb_GotFocus(object sender, RoutedEventArgs e)
{
    // ButtonChrome is the first child of button
    DependencyObject chrome = VisualTreeHelper.GetChild(button, 0);
    chrome.SetValue(Microsoft.Windows.Themes.ButtonChrome.RenderMouseOverProperty, true);
}

private void tb_LostFocus(object sender, RoutedEventArgs e)
{
    // ButtonChrome is the first child of button
    DependencyObject chrome = VisualTreeHelper.GetChild(button, 0);
    chrome.ClearValue(Microsoft.Windows.Themes.ButtonChrome.RenderMouseOverProperty);
}

необходимо сослаться на PresentationFramework. Aero.dlll для этого для работы и затем это будет только работать над Vista для Аэро темы.

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

См. http://blogs.msdn.com/llobo/archive/2006/07/12/663653.aspx для подсказок

2
ответ дан 5 December 2019 в 02:08
поделиться

Как следование до комментария jesperll, я думаю, что можно обойти создание пользовательского шаблона для каждой темы путем динамичной установки стиля на тот, который Вы хотите / пустой указатель.

Вот мое окно с определенным стилем (но не набор к чему-либо).

<Window x:Class="WpfApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication"
Title="Window1" Height="300" Width="300">

<Window.Resources>
    <Style TargetType="{x:Type Button}" x:Key="MouseOverStyle">
        <Setter Property="Background">
            <Setter.Value>Green</Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Grid Height="30">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <TextBox x:Name="MyTextBox" Grid.Column="0" Text="Some Text" Margin="2" GotFocus="TextBox_GotFocus" LostFocus="MyTextBox_LostFocus"/>
    <Button x:Name="MyButton" Grid.Column="1" Content="Button" Margin="2" MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave" />
</Grid>

Вместо того, чтобы установить стиль через триггеры в шаблоне, можно использовать события в .cs файле как так:

...

    public partial class Window1 : Window
{
    Style mouseOverStyle;
    public Window1()
    {
        InitializeComponent();
        mouseOverStyle = (Style)FindResource("MouseOverStyle");
    }
    private void TextBox_GotFocus(object sender, RoutedEventArgs e) { MyButton.Style = mouseOverStyle; }
    private void MyTextBox_LostFocus(object sender, RoutedEventArgs e) { MyButton.Style = null; }
    private void Button_MouseEnter(object sender, MouseEventArgs e) { ((Button)sender).Style = mouseOverStyle; }
    private void Button_MouseLeave(object sender, MouseEventArgs e) { ((Button)sender).Style = null; }
}

Вы получаете ссылку на стиль в конструкторе и затем динамично устанавливаете его / сбрасывает его. Таким образом, можно определить то, на что Вы хотите, чтобы Ваш стиль был похож в Xaml, и Вы не должны полагаться ни на какие новые зависимости.

0
ответ дан 5 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: