Wpf 整个解决方案中的相同数据源
假设我的解决方案包含两个项目,分别命名为控件和窗体。 在第一个中,我定义了我的控件,在第二个中,我有使用这些控件的页面 项目表单包含一个数据源。数据源包含一个名为(比如)Foo(string)的属性Wpf 整个解决方案中的相同数据源,wpf,datasource,expression-blend,Wpf,Datasource,Expression Blend,假设我的解决方案包含两个项目,分别命名为控件和窗体。 在第一个中,我定义了我的控件,在第二个中,我有使用这些控件的页面 项目表单包含一个数据源。数据源包含一个名为(比如)Foo(string)的属性 我是否能够引用“控件”项目中数据源的相同属性 如果不是,是否有其他方法在整个解决方案中包含类似全局变量的内容 更具体地说,在我的示例中:我的控件包含(除其他外)一个按钮。我希望单击按钮更改Foo的值,以便以后可以从表单(不包含此控件)中的页面引用它。您的表单项目必须引用控件项目。因此,如果不需要循环
更具体地说,在我的示例中:我的控件包含(除其他外)一个按钮。我希望单击按钮更改Foo的值,以便以后可以从表单(不包含此控件)中的页面引用它。您的
表单
项目必须引用控件
项目。因此,如果不需要循环引用,则必须:
Common
,将数据源移到那里
从控件
和表单
中引用它(最干净的方式)
数据源
移动到控件
项目(肮脏方式)如果已在
主窗口
上设置了数据上下文
,则可以从该XAML中的任何控件轻松访问它。您可以使用相对资源绑定来执行此操作:
从显示在main window.xaml中的控件:
<Controls:SomeControl DataContext="{Binding DataContext, RelativeSource={RelativeSource
AncestorType={x:Type MainWindow}}}" />
关于第二种选择,你是说“搬家”吗?我需要从两个项目中引用它。我不知道数据源是什么,你的类?如果是这样,那么就把类的实现放在控件库中。你说的MainWindow是什么意思?这个应该放在哪里?正如我所说,我有一个解决方案,里面有两个项目。我说的“主窗口”是什么意思???如果你没有使用WPF,为什么要用WPF标记这个问题?如果您使用的是WPF,那么您怎么能问我所说的MainWindow
是什么意思?它应该在MainWindow.xaml
,您的主应用程序窗口中。很抱歉,我认为WFP是一个通用术语。我正在使用Blend for Visual Studio 2013我想知道你为什么一直提到表单。。。如果您使用的是WinForms(或任何其他语言),那么最好编辑您的问题并用实际使用的任何语言替换WPF标记。至少编写您的语言的人能够提供帮助,而不仅仅是WPF开发人员。表单只是包含.xaml页面的项目的名称。控件项目同时包含.xaml和.cs页面。我应该去掉WPF并保持混合吗?
<Controls:SomeControl DataContext="{Binding DataContext.SomeProperty, RelativeSource={
RelativeSource AncestorType={x:Type MainWindow}}}" />