让我们假设我的解决方案包含2个名为Controls和Forms的项目。 在第一个我定义我的控件,在第二个我有使用控件的页面。
项目表单,包含一个DataSource。 DataSource包含一个名为(let' s)Foo(string)。
的属性更具体地说明我的示例:我的控件包含(其中包括)一个按钮。我想在按钮上单击以更改Foo的值,以便稍后可以从Forms中的页面引用它(不包含此Control)。
答案 0 :(得分:1)
您的Forms
项目必须引用Controls
项目。因此,如果您不想要循环引用,则必须:
Common
,移动DataSource
和。{
从Controls
和Forms
(最干净的方式)DataSource
移至Controls
项目(脏路)答案 1 :(得分:1)
如果您在DataContext
上设置了MainWindow
,则可以从该XAML中的任何控件轻松访问它。您可以使用RelativeSource Binding
执行此操作:
来自MainWindow.xaml
中显示的控件:
<Controls:SomeControl DataContext="{Binding DataContext, RelativeSource={RelativeSource
AncestorType={x:Type MainWindow}}}" />
此Binding Path
会将DataContext
控件的SomeControl
设置为MainWindow.DataContext
中设置的相同值。如果您想将DataContext
控件的SomeControl
设置为MainWindow.DataContext
对象值的属性,则可以执行以下操作:
<Controls:SomeControl DataContext="{Binding DataContext.SomeProperty, RelativeSource={
RelativeSource AncestorType={x:Type MainWindow}}}" />