gpt4 book ai didi

c# - 以编程方式在资源中使用事件 setter 设置样式

转载 作者:行者123 更新时间:2023-11-30 22:59:28 25 4
gpt4 key购买 nike

我需要在代码隐藏中以编程方式在网格资源中应用样式。

我有以下代码片段:

<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);
}

我哪里错了?

提前致谢。

编辑:我写错了网格的名称。网格的正确名称是grid

最佳答案

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);

关于c# - 以编程方式在资源中使用事件 setter 设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52186579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com