-1

私は XAML コードを持っています:

<TextBox Name="textBoxMask1"/>
<TextBox Name="textBoxMask2"/>
<TextBox Name="textBoxMask3"/>
...
<TextBox Name="textBoxMask9"/>

そしてC#のクラス:

private static string mask1;
public static string Mask1
{
    get { return mask1; }
    set { mask1 = value; }
}

private static string mask2;
public static string Mask2
{
    get { return mask2; }
    set { mask2 = value; }
}

private static string mask3;
public static string Mask3
{
    get { return mask3; }
    set { mask3 = value; }
}
....
private static string mask9;
public static string Mask9
{
    get { return mask9; }
    set { mask9 = value; }
}

そして、これらの TextBoxes を Properties でバインドしたい -> textBoxMask1 を Mask1 などでバインドします。以前は TextChanged でこれを行いましたが、Binding を作成したいと考えています。TooWay バインディング。別の C# クラスで Mask1、Mask2、Mask3、...、Mask9 を事前に定義し、後でこれらの値を (一部の C# コードでも) 変更したいので、変更をレイアウト (XAML) に表示する必要があります。 ) および C# コードで - そう例。プロパティ Mask1 を C# から変更すると TextBox textBoxMask1 のテキストが変更され、textBoxMask1 のテキストを変更するとプロパティ Mask1 が変更されます。オブジェクト XAML と C# を接続 (バインディング) する方法がわかりません。

4

1 に答える 1

0

通常の Binding の場合、プロパティを静的にする必要はなく、パブリックにするだけです。ここに例があります:

C# コード (1 つのプロパティ用)

private string mask1;
public string Mask1
{
    get { return mask1; }
    set 
        { 
           mask2 = value;
           RaisePropertyChanged("Mask1");
        }
}

プロパティを含むクラスが INotifyPropertyChanged インターフェイスを実装し、各プロパティのセッターで対応するイベントを発生させることがバインディングにとって非常に重要です。もう 1 つのオプションは、すべてのプロパティを DependecyProperty にすることですが、通常はやり過ぎです。

XAML に関しては:

<TextBox Name="textBoxMask1" Text="{Binding Mask1, Mode=TwoWay}"/>

(TwoWay Binding は Text プロパティの既定値ですが、明示的に指定しても問題ありません)。

TexBoxes (通常は UserControl) を含むオブジェクトの DataContext が C# クラスの有効なインスタンスに設定されていることを確認してください。

ところで、これは非常に基本的な質問です。そのため、私の前に反対票が投じられ、回答がありませんでした。期待されているのは、「これを行う方法を教えてください」のようなものではなく、非常に具体的な答えで、あなたにとって本当の問題を引き起こす質問をすることです.

これがあなたの質問に答える場合は、回答としてマークすることを忘れないでください (左上の「チェック」マーク)。投票も大歓迎です。

お役に立てば幸いです。

于 2012-12-29T21:10:45.307 に答える