【发布时间】:2015-09-03 10:33:17
【问题描述】:
我在我的解决方案中分离了两个项目,因为它们每个都需要针对不同 CPU 的库。 在我的一个项目中,我只有响应点击的类(我们称之为 ProjectClick 64 位库),另一个是一种具有 MVVM 实现的 UI (ProjectUser 32 位库)。
我正在寻找的方法是让 ProjectUser 知道单击已由 ProjectClick 执行,而不 Project Click 不知道其他任何内容。
到目前为止我所尝试的
我一直在上网和阅读书籍以了解更多关于 C# 的信息。据我了解,要进行交流,最好的方法是创建一个接口。我一直在寻找这个subject 的答案,并且一直在尝试实现第三个项目,并在两者之间提供一个接口。
好的,代码到这里,(这是特意简化的代码,希望够清楚)
首先是接口(在控制台应用程序中)
namespace LinkApplication
{
public interface IEvent
{
bool CompareClick { get; set; }
}
}
然后,点击的项目是wpf
namespace ProjectClick
public partial class MainWindow : Window, IEvent
{
public MainWindow()
{
try { InitializeComponent(); }
catch (Exception e)
{
Console.WriteLine(e.InnerException);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
CompareClick = true;
}
private void Button_Leave(object sender, RoutedEventArgs e)
{
CompareClick = false;
}
}
最后是用户界面
namespace ProjectUser
{
public partial class MainWindow : Window, IEvent, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
this.WindowStartupLocation = WindowStartupLocation.CenterScreen; //start the window at the centre of the screen
DataContext = this;
}
public bool CompareClick { get; set; }
public bool ClickCheck
{
get { return CompareClick; }
set
{
if (value != CompareClick)
{
CompareClick = value;
OnPropertyChanged("ClickCheck");
}
}
}
您可以在 Window 中看到此处的 realted Label
<Label Content="{Binding ClickCheck}" HorizontalAlignment="Left" Margin="690,358,0,0" VerticalAlignment="Top"/>
这里,value总是停留在false,我也不是很明白改变value的逻辑。我还在学习中,在网上看到过其他几个类似自定义EventHandler的想法,但我不太了解两个互不相识的项目之间的实现。如果有人能引导我找到可能的解决方案或更好的执行方式,我会很高兴。
编辑
我最好避免在ProjectUser 中引用Project Click,以保持不同CPU 目标的权限。反之亦然。
感谢您的友好回答。
【问题讨论】:
-
试试我的答案。它不需要 ProjectClick 和 ProjectUser 之间的引用
标签: c# wpf interface eventhandler