1

いくつかのコントロール (ボタンとチェックボックス) を含む UserControl を作成しました。

その後、WPF Windows でその UserControl への参照を追加しました。

私がやりたいことは: UserControl のボタンをクリックすると、このボタンがアクションを起動し、Windows で何かを変更します (Textbox1.Text = "something")。

私の問題は、UserControl から 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>
4

3 に答える 3

2

この「コミュニケーション」にアプローチするにはいくつかの方法があります...ここではいくつかの方法を紹介します...他にもたくさんあります:

1) コマンドを定義します...ボタンをクリックすると発生するコマンドです。

次に、ウィンドウでそのコマンドを処理し、TextBox を何らかの文字列に変更します。

データ/コンテキストを提供する場合は、CommandParameter を使用できます。

2) ツリーをバブルアップする RoutedEvent (バブリング 1) を定義し、ウィンドウがそれを処理できるようにします。このイベントは、UserControl の Button によって発生し、Window に設定したい "テキスト" が含まれます。

3)「何か」が「状態」インジケーターのようなものである場合は、UserControlに「状態」プロパティを提供できます(または、代わりに状態データを含むViewModelを別のオプションで使用できます)。次に、TextBox を UserControl (または ViewModel) のそのプロパティにバインドして、「状態」を取得できます (コンバーターで表示可能なメッセージに「変換」される値として、または直接の文字列として)。

于 2012-09-13T12:04:59.700 に答える
1

UserControl は独立したエンティティであるため、UserControl は Window 関連のものを変更できないはずです。

USerControl でイベントを公開し、そのイベントを Window で処理します。その場合、ウィンドウに必要なことを行います

于 2012-09-13T12:05:25.113 に答える
0

ユーザー コントロールを作成するときは、ハンドルをメイン ウィンドウに渡す必要があります。次に、ユーザー コントロールから呼び出してテキスト ボックスの値を変更するパブリック メソッドをメイン ウィンドウに作成する必要があります。

于 2012-09-13T12:03:12.663 に答える