如何从 WPF 中的代码背后设置交互行为?
Posted
技术标签:
【中文标题】如何从 WPF 中的代码背后设置交互行为?【英文标题】:How to Set Interaction Behavior from Code Behind in WPF? 【发布时间】:2021-12-24 13:43:09 【问题描述】:我对 Window 有如下行为
<Window>
<my:Notify x:Name="Not"/>
<behaviors:Interaction.Behaviors>
<behavior:RebuildBehavior Element="Binding ElementName=Not" />
</behaviors:Interaction.Behaviors>
<Window>
现在我想在后面的代码中编写这段代码,所以我使用了这段代码:
在 Notify.cs(加载事件)中:
RebuildBehavior behavior = new RebuildBehavior();
behavior.Element = this;
Interaction.GetBehaviors(this).Add(behavior);
但是我的应用在最后一行崩溃了Interaction.GetBehaviors(this).Add(behavior);
System.Resources.MissingManifestResourceException: '找不到 资源中的资源“ExceptionStringTable.resources”
我写的代码是否正确?
更新: 我将代码移至 window.cs(已加载事件)
RebuildBehavior behavior = new RebuildBehavior();
behavior.Element = Notify.Instance;
Interaction.GetBehaviors(this).Add(behavior);
崩溃已修复但无法正常工作
【问题讨论】:
我无法重现该问题。类似的代码确实适用于我的。一定是您没有在RebuildBehavior
中发布的内容。
你检查过来自What does MissingManifestResourceException mean and how to fix it?的所有案例
@Rekshino 我将代码移至 window.cs,现在修复了崩溃,但预期的行为不起作用
尝试创建minimal reproducible example 并发布新问题。
【参考方案1】:
以下代码相当于您的 XAML 标记:
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
RebuildBehavior behavior = new RebuildBehavior();
BindingOperations.SetBinding(behavior, RebuildBehavior.ElementProperty,
new Binding() ElementName ="Not" );
Interaction.GetBehaviors(this).Add(behavior);
【讨论】:
以上是关于如何从 WPF 中的代码背后设置交互行为?的主要内容,如果未能解决你的问题,请参考以下文章