1

私が財産を持っているとしましょう

FIrstNameLastName

私はそれを単一でバインドする必要がありtextboxます。

したがって、1つのテキストボックスでとの両方 FirstNameを表示できますLastName

では、どうすればそれが可能になるのでしょうか。

4

4 に答える 4

3

マルチバインディングを使用してこれを行うことができます
。OnWayバインディングの場合は、次を使用します。

<TextBox>
    <TextBox.Text>
        <MultiBinding StringFormat="{}{0} {1}" Mode="OneWay">
            <Binding Path="FirstName"/>
            <Binding Path="LastName"/>
        </MultiBinding>
    </TextBox.Text>
</TextBox>

MutiBindingクラスの詳細については、こちらをご覧ください

于 2011-06-14T11:31:10.200 に答える
2

FullNameおそらく、3番目のプロパティ。

より良い助けが必要な場合は、より良い質問をしてください(たとえば、あなたのタイプは何ですか)。

編集:とにかく、上記のように「マルチパート名」を安全に処理できるように、少なくとも2つのテキストボックスを用意することをお勧めしますKarl Heinz Schmidt-Meyer von Neuenhausen zu Bad-Reichenhall。あいまいさが少なくなることは別として、これはWebフォームの事実上の標準です。


edit2:Navid Rahmaniの回答についてのメモとして、データベースが非常に深刻に破損する可能性があるため、システム管理者、プログラマー、アプリケーションが失敗する理由の手がかりがないプログラマー、および大量のお金。つまり、クライアントがすでにクライアントを失う前に、この不気味な破損が発見された場合です。

問題のコード

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
    string[] strings = ((string)value).Split(' ');
    return strings;
}

私の質問は、マルチパート名をどのように処理するかということでした。彼は、「、」を使用できると答えました。私の返事:

名前コンポーネントが2つ未満の場合は処理されないため、コードはこれを処理しません(を取得しますIndexOutOfRangeException)。さらに、コードは複数の空白や忘れられた空白を処理しません。追加の空白ごとに、個別の値トークンが生成され、データが消えてデータベースエントリが台無しになる可能性があります(最初の2つのエントリのみを読み取るため)。さらに、ユーザーがコンマを忘れていないか、セミコロンやスラッシュなどの入力ミスがないを検証する必要があります。これらの問題はすべて、別個のフィールドに分離することで存在しなくなります。ユーザー入力は、セキュリティとプログラムの安定性の最大の恐怖です。

于 2011-06-14T11:29:52.983 に答える
2

MultiBindingクラスを試してください:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="FirstName" />
      <Binding Path="LastName" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>
于 2011-06-14T11:33:15.723 に答える
1
<TextBlock Name="textBox">
  <TextBlock.Text>
    <MultiBinding>
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

このような何かがあなたを近づけるはずです。これはVSで書かれていないので、構文的に正しいかどうかはわかりません。

于 2011-06-14T11:36:11.907 に答える