用户控件和Windows之间的相互作用(Interaction between UserContro

2019-07-31 14:01发布

我创建其中包含一些conrols(按钮和复选框),一个用户控件。

之后,我加入到我的WPF窗口用户控件的引用。

我想要做的是:当我在一个按钮,在用户控件此按钮触发一个动作单击并更改Windows(Textbox1.Text =“东西”)的东西。

我的问题是,我无法从用户控件访问控制Windows的内部。

任何帮助吗?

EDIT :添加代码示例

<s:SurfaceWindow x:Class="Project.Temp.MainSurface"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:s="http://schemas.microsoft.com/surface/2008"
                 xmlns:local="clr-namespace:Project"              
                 Title="Project.Temp"
>
<Grid x:Name="Root" ... >
     <Grid x:Name="Child" ... >
         <local:MyUserControl x:Name="UserControlStart" ... />
     </Grid>
...
</Grid>

Answer 1:

有几种方法可以解决这个“沟通” ......这里只是一些方法......有很多更多:

1)定义命令被点击时你的按钮会提高。

然后在你的窗口中,您将处理该命令,并更改文本框的一些字符串。

如果你想提供一些数据/上下文可以使用CommandParameter。

2)定义RoutedEvent(鼓泡一个)冒泡的树,然后一个窗口可以处理它。 本次活动将通过在用户控件的按钮来提高,将包含“文本”你想在窗口中进行设置。

3)如果你的“东西”是怎样的一个“状态”指示灯的...那么你可以提供你的用户控件“状态”属性(或其他选项有一个视图模型包含的状态数据,而不是)。 那么你的文本框可以结合在您的用户控件(或视图模型),该属性获取“状态”(无论是作为一个值,然后是具有转换器“转换”为可显示的消息,或者作为直接字符串)。



Answer 2:

用户控件不应该是能够改变窗口相关的东西,因为用户控件是独立的实体。

揭露用户控件的事件和窗口处理该事件。 在这种情况下你想要做什么你的窗口



Answer 3:

当您创建的用户控件必须将一个句柄传递给你的主窗口。 然后,你必须创建在您从用户控件调用,并且在文本框中更改值主窗口的公共方法。



文章来源: Interaction between UserControl and Windows