我有一个带有 Click 事件的 UserControl,我希望由另一个 UserControl 中的另一个 Button 的 click 事件触发该事件。它不起作用。UserControl2 在 UserControl1 内。我遇到这个问题已经有一段时间了,之前在应用程序的其余部分中使用了一个 RelayCommand 类,只有 MVVM,直到我有一个场景,我想通过单击按钮交换图片。但是按钮和图像交换发生的位置应该被分成两个不同的用户控件。无论如何,我在图像交换所在的 Usercontrol 2 上得到了以下 XAML:
<Button x:Name="button" VerticalAlignment="Bottom" Height="48" Click="ClickData" />
UserControl2 背后的代码:
private bool switchimgbool = true;
public void ClickData(object sender, RoutedEventArgs e)
{
if (switchimgbool == true)
{ switchimgbool = false; }
else if (switchimgbool == false)
{ switchimgbool = true; }
switch (switchimgbool)
{
case false:
{
//some code
}
case true:
{
//some code
}
}
}
在 UserControl1 xaml 中:
<Viewbox Stretch="Fill" Height="270" VerticalAlignment="Top">
<local:UserControl2></local:UserControl2>
</Viewbox>
///
<Button x:Name="executebutton" Click="executebutton_Click" />
UserControl1 背后的代码:
public static RoutedEvent SetClickData = EventManager.RegisterRoutedEvent("ClickData", RoutingStrategy.Bubble, typeof(RoutedEventhandler), typeof(UserControl2));
public event RoutedEventHandler ClickData
{
add { AddHandler(SetClickData, value);}
remove { RemoveHandler(SetClickData, value);}
}
UserControl2 us2 = new UserControl2();
private void executebutton_Click(object sender, RoutedEventArgs e)
{
us2.RaiseClickedEvent(sender);
}
该应用程序由许多具有不同视图的用户控件和按钮构建而成。就像我说的,我之前使用 MVVM 和 ViewModels 和 Views。但是,这是当前状态的代码,但我一直在尝试在互联网上使用不同的示例。但我没有让它工作,甚至尝试做一个自定义的 ClickRoutedEventArgs。只能在 UserControl2 中直接触发 Click 事件。我可能不再想清楚了,问题只是拖累了我。如果有人可以为我提供一些代码或帮助我朝着正确的方向前进,我会很高兴。有没有一种快速的方法/修复我很乐意这样做。