WPF-如何访问不同选项卡中的元素,这些选项卡是在单独的XAML中定义的
本文关键字:选项 定义 XAML 单独 元素 访问 何访问 WPF- | 更新日期: 2023-09-27 17:58:21
情况是这样的:我有一个WPF项目,它包含一个带有2个TabItems的TabControl。一个选项卡只包含一个TextBlock,另一个选项卡有一个TextBox和一个按钮。我想要实现的是,当按下按钮时,第二个选项卡的TextBox中的文本会出现在第一个选项卡的TextBlock中
这应该是一项简单的任务,但我被卡住了,因为我在一个单独的XAML中设计了每个选项卡(我需要保持这种方式),并且我有这个MainWindow.XAML:
<Window x:Class="TabsUserControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TabsUserControl"
x:Name="root"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl Name="tabCtrl" HorizontalAlignment="Left" Height="210" VerticalAlignment="Top" Width="366" Margin="89,47,0,0">
<local:UserTabControl1 Name="tab1"/>
<local:UserTabControl2 Name="tab2"/>
</TabControl>
</Grid>
</Window>
所有元素都有一个指定的名称,所以我如何访问它们来在XAML的.cs文件中为第二个选项卡编写方法?
提前感谢!
您可以使用双向模式向每个文本框的文本属性添加绑定。如果按下按钮:将第一个属性的值设置为第二个。
属性看起来像:
private string text1;
public string Text1
{
get{return this.text1;}
set{
this.text1 = value;
OnPropertyChanged("Text1");}
}
private string text2;
public string Text2
{
get{return this.text2;}
set{
this.text2 = value;
OnPropertyChanged("Text2");}
}
在你的按钮的点击事件(或执行命令)中,你只需要做:
Text1 = Text2;
就是
由于您最明确地希望这些用户控件彼此解耦,因此我将为DataExchange使用一个单独的消息传递类。MVVM Light Toolkit中已经提供了这样一个类。一个UC可以发布另一个UC能够接收的信息。
否则,如果带有文本框的用户控件将text提供为依赖属性,则可以让Window通过绑定进行同步。