动态加载 XAML 时附加到 XAML 控件中的单击事件。
Attach to a click event in XAML control when loading XAML dynamically.
我有一个 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 中完美运行。我可以完全访问我在应用程序 class 中定义的所有 public 属性。
我的问题是我想 link 在我的按钮上添加点击事件。如果我在 XAML 中添加一个 Click 事件,它会在运行时出错,告诉我我需要编译我的 XAML。
有什么方法可以在应用程序中订阅 MyButton 的 Click 事件 class?
好吧,如果您说绑定有效,那为什么还要尝试扰乱 Click 事件?而是使用 Button 的命令 属性。创建一个 ICommand
实例(如 DelegateCommand
或 RelayCommand
),将其放入 属性 包中并绑定到它!
我有一个 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 中完美运行。我可以完全访问我在应用程序 class 中定义的所有 public 属性。
我的问题是我想 link 在我的按钮上添加点击事件。如果我在 XAML 中添加一个 Click 事件,它会在运行时出错,告诉我我需要编译我的 XAML。
有什么方法可以在应用程序中订阅 MyButton 的 Click 事件 class?
好吧,如果您说绑定有效,那为什么还要尝试扰乱 Click 事件?而是使用 Button 的命令 属性。创建一个 ICommand
实例(如 DelegateCommand
或 RelayCommand
),将其放入 属性 包中并绑定到它!