Установить стиль с помощью Eventsetter в ресурсах программно - PullRequest
0 голосов
/ 05 сентября 2018

Мне нужно применить стиль в ресурсах сетки программно в коде позади.

У меня есть следующий фрагмент кода:

<Grid x:Name="grid">
    <Grid.Resources>
        <Style TargetType="{x:Type ig:LabelPresenter}">
            <EventSetter Event="PreviewMouseMove" Handler="LabelPresenter_PreviewMouseMove"/>
        </Style>
    </Grid.Resources>
    .
    .
    .
</Grid>

Я хочу создать Style в коде и добавить его к ресурсам для обработки относительного действия.

Я пытался сделать это таким образом, но это не сработало.

public MainWindow()
{
    InitializeComponent();

    var style = new Style { TargetType = typeof(LabelPresenter) };
    var eventSetter = new EventSetter(PreviewMouseMoveEvent, new MouseButtonEventHandler(LabelPresenter_PreviewMouseMove));
    style.Setters.Add(eventSetter);
    grid.Resources.Add("style", style);
}

Где я не прав?

Заранее спасибо.

РЕДАКТИРОВАТЬ: я написал неправильное имя сетки. Правильное название сетки: сетка

1 Ответ

0 голосов
/ 05 сентября 2018

Стиль, определенный в разметке XAML, неявный, то есть не имеет x:Key. Поэтому измените первый аргумент, передаваемый методу Add, на typeof(LabelPresenter).

Кроме того, обработчик событий PreviewMouseMove принимает MouseEventArgs:

var style = new Style { TargetType = typeof(LabelPresenter) };
var eventSetter = new EventSetter(PreviewMouseMoveEvent, new MouseEventHandler(LabelPresenter_PreviewMouseMove));
style.Setters.Add(eventSetter);
grid.Resources.Add(typeof(LabelPresenter), style);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...