2016-06-23 31 views
0

我有一个在运行时动态加载的XAML控件。这是纯粹的XAML,没有代码。动态加载XAML时,附加到XAML控件中的单击事件。

我没有任何控制父加载机制,这就是为什么这看起来有点奇怪。

我有一个父应用程序加载我的插件DLL并加载我的XAML控件。

我的DLL签名是:

public class Application : BaseClassHere 
{ 
    public Application(IParentContext context) : base(context) 
    { 
     // Im placing this instance in the bag which i use in my XAML 
     base.MyObservablePropertyBag["MyParentContext"] = new ObservableValue<object>(this); 
    } 
} 

我的XAML是这样的:

<av:UserControl 
    xmlns:local="clr-namespace:MyApplicationNS;assembly=MyDll" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" > 

    <Border DataContext="{Binding MyObservablePropertyBag[MyParentContext].Value}" > 

     <Button Name="MyButton" /> 

    </Border> 
</UserControl> 

这种结合也很好用XAML。我可以完全访问我在Application类中定义的所有公共属性。

我的问题是,我想链接到我的按钮上点击事件。如果我在XAML中添加一个Click事件,它会在运行时错误地告诉我需要编译我的XAML。

有没有办法在Application类中订阅MyButton上的Click事件?

+0

刚刚添加事件触发器到Routed.Event通过xaml单击时出错了吗? –

回答

1

那么,如果你说绑定工程,那么为什么试图搞砸Click事件?而是使用Button的Command属性。创建一个ICommand实例(如DelegateCommandRelayCommand),并将其放置在您的包中,并绑定到它!

+0

完美。之前从未使用过ICommand。 – CathalMF