Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中的窗口和页面之间传递值_C#_.net_Wpf - Fatal编程技术网

C# 在WPF中的窗口和页面之间传递值

C# 在WPF中的窗口和页面之间传递值,c#,.net,wpf,C#,.net,Wpf,我正在用WPF开发一个软件,我想在窗口(主窗口)和页面(位于框架中)之间传递一个参数(文本框)…你对此有什么想法吗 太多了,我的朋友们。。。 BB 编辑: 我在主窗口中有一个文本框,值为“DB2012_2013”,那么框架的代码是: <Frame HorizontalContentAlignment="Stretch" LoadCompleted="frSample_LoadCompleted" Navigating="frSample_Navigating" VerticalC

我正在用WPF开发一个软件,我想在窗口(主窗口)和页面(位于框架中)之间传递一个参数(文本框)…你对此有什么想法吗

太多了,我的朋友们。。。 BB

编辑: 我在主窗口中有一个文本框,值为“DB2012_2013”,那么框架的代码是:

    <Frame  HorizontalContentAlignment="Stretch" LoadCompleted="frSample_LoadCompleted" Navigating="frSample_Navigating" VerticalContentAlignment="Stretch" x:Name="frSample" Background="{x:Null}" Margin="0,0,0,0" Source="{Binding SelectedItem.XamlFilePath, ElementName=CategoryTreeView, FallbackValue=Welcome.xaml, IsAsync=True}"/>

然后,当我选择要打开的页面时,我会在新页面中传递文本框的值。。。要将此值用于要执行的某些查询,请尝试以下操作
App.Current.MainWindow.TextBoxName.Text

您可以使用DataContext和WPF绑定功能

您可以将DataContext设置为属于MainWindow。 您需要将数据传递到框架或UI组件文本框中吗

<TextBox Name="textBox" Text="Text"></TextBox>
<Frame DataContext="{Binding ElementName=textBox,Path=DataContext}" Background="AliceBlue" Width="200">

您可以使所有页面实现一个具有所需值属性的接口

public interface IPageWithValue
{
    string MyValue { get; set; }
}
无论何时更改页面,请从主窗口设置属性值;无论何时离开页面,请读取属性值


让您的页面实现该接口。

我敢肯定,有比公开textbox变量更优雅的方法。另外,如果不强制转换到主窗口的类,这将不起作用。感谢您的回复,主窗口是框架的容器,然后框架将更改许多页面,然后每次更改页面时我都需要此值(文本)要存储数据库中的数据…那么我应该使用此值来存储数据,以便找出如何传递数据并在查询中使用的方法。将值从主窗口传递到页面是否会立即触发搜索操作?还是有一些用户交互?