Привязывание двух свойств с ==> Одиночное управление

StackOverflow https://stackoverflow.com/questions/6342773

Вопрос

Предположим, у меня есть собственность

FIrstName а также LastName

Мне нужно связать это с помощью одиночного textbox.

Так в просто Одиночный текстовый поле Я могу отобразить оба FirstName а также LastName.

Тогда как это возможно?

Это было полезно?

Решение

Вы можете использовать многобингирование для этого
За На пути Привязка используйте это:

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

Для получения дополнительной информации о Mutibinding Class Like на здесь

Другие советы

Попробуйте Многовилочный класс :

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="FirstName" />
      <Binding Path="LastName" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

Третья собственность FullName, возможно.

Для лучшей помощи, пожалуйста, задайте лучший вопрос (каковы ваши типы, например).

РЕДАКТИРОВАТЬ: В любом случае, я бы порекомендовал иметь как минимум два текстовых поле, так что вы можете безопасно обрабатывать «имена Multipart», например, вышеупомянутые Karl Heinz Schmidt-Meyer von Neuenhausen zu Bad-Reichenhall. Анкет Помимо того, что он менее неоднозначен, это стандарт Defacto на веб-формах.


Edit2: как примечание о Навид Рахмани Ответ, потому что он открывает потенциал для действительно серьезной коррупции базы данных, затрат сверхурочно для SYS-админи, программистов, которые не будут иметь отправной точки и подсказка о том, почему их применение терпит неудачу, и тонны денег. То есть, если эта жуткая коррупция когда -либо обнаружена до того, как ваш клиент уже потерял своих клиентов.

Код рассматривается

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

Мой вопрос заключался в том, как это будет обращаться с именами Multipart. Он ответил, что можно было использовать »,« тогда. Мой ответ:

Ваш код не справляется с этим, поскольку он не обрабатывает корпус с менее чем двумя компонентами имени (вы получите IndexOutOfRangeException) Кроме того, ваш код не обрабатывает несколько или забытых пробелов. Для каждого дополнительного пробела он производит отдельную ценность, потенциально Разобление записей базы данных с исчезающими данными (потому что вы читаете только первые две записи). Далее вы должны подтвердить если Пользователь не забыл запятую или опасный, например, с полуколоном или чертой. Все эти проблемы перестают существовать с разделением в отдельные поля. Пользовательский ввод - это страх безопасности номер один и стабильность программы.

<TextBlock Name="textBox">
  <TextBlock.Text>
    <MultiBinding>
      <Binding Path="FirstName"/>
      <Binding Path="LastName"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

Что -то подобное должно приблизить вас. Это не было написано в VS, поэтому я не уверен, что это синтаксически правильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top