0

状況は次のとおりです。2つのTabItemを持つTabControlを含むWPFプロジェクトがあります。1つのタブにはTextBlockのみが含まれ、もう1つのタブにはTextBoxとボタンがあります。私が達成したいのは、ボタンを押すと、2番目のタブの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>

すべての要素に名前が割り当てられているので、それらにアクセスして、2番目のタブのXAMLの.csファイルにメソッドを書き込むにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

0

双方向モードを使用して、各テキストボックスのテキストプロパティにバインディングを追加できます。ボタンが押された場合:最初のプロパティの値を2番目のプロパティに設定します。

プロパティは次のようになります。

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");}
}

ボタンのClick-Event(またはExecuteCommand)で、次のことを行う必要があります。

Text1 = Text2;

それでおしまい

于 2013-02-07T11:42:33.583 に答える
0

これらのユーザーコントロールを互いに分離したいのは間違いないので、DataExchangeには個別のMessagingクラスを使用します。このようなクラスは、MVVMLightToolkitですでに利用可能です。一方のUCは、もう一方が受信できる情報を公開できます。

それ以外の場合、テキストボックスを使用したユーザーコントロールがテキストを依存関係プロパティとして提供している場合は、ウィンドウにバインディングを介して同期を行わせることができます。

于 2013-02-07T11:45:13.713 に答える