PasswordBox с MVVM

Разве Вы не можете добавить использование условий объединения ActiveRecord?

, Например, у меня есть довольно сложный запрос с помощью нескольких зависимых записей, и он хорошо работает путем объединения условий, и включайте директивы

Contractors.find(
  :all, 
  :include => {:council_areas => :suburbs},
  :conditions => ["suburbs.postcode = ?", customer.postcode]                 
)    

Предположение что:

  1. пригород have_many CouncilAreas
  2. CouncilAreas have_many Подрядчиков

Это соединение возвращает Подрядчиков в пригороде, определенном [1 111] customer.postcode.

сгенерированный запрос похож:

SELECT contractors.*, council_areas.*, suburbs.*
FROM `contractors` 
LEFT OUTER JOIN `contractors_council_areas` ON `contractors_council_areas`.contractor_id = `contractors`.id 
LEFT OUTER JOIN `council_areas` ON `council_areas`.id = `contractors_council_areas`.council_area_id 
LEFT OUTER JOIN `council_areas_suburbs` ON `council_areas_suburbs`.council_area_id = `council_areas`.id 
LEFT OUTER JOIN `suburbs` ON `suburbs`.id = `council_areas_suburbs`.suburb_id WHERE (suburbs.postcode = '5000')

(Примечание: Я отредактировал список столбцов для краткости).

19
задан Dave Clemmer 5 August 2011 в 00:00
поделиться

2 ответа

По соображениям безопасности свойство Password не является свойством зависимости, и поэтому вы не можете выполнить привязку к нему. К сожалению, вам придется выполнить привязку в коде по старинке (зарегистрируйтесь для события OnPropertyChanged и обновите значение с помощью кода ...)


Быстрый поиск приводит меня к этой записи в блоге в котором показано, как написать вложенное свойство, чтобы обойти проблему. Стоит ли это делать или нет, на самом деле зависит от вашего отвращения к программному обеспечению.

13
ответ дан 30 November 2019 в 04:29
поделиться

Вы всегда можете написать элемент управления, который обертывает пароль и добавляет свойство зависимости для свойства Password.

Я бы просто использовал код позади, но при необходимости вы можете сделать что-то вроде:

public class BindablePasswordBox : Decorator
{
    public static readonly DependencyProperty PasswordProperty =
        DependencyProperty.Register("Password", typeof(string), typeof(BindablePasswordBox));

    public string Password
    {
        get { return (string)GetValue(PasswordProperty); }
        set { SetValue(PasswordProperty, value); }
    }

    public BindablePasswordBox()
    {
        Child = new PasswordBox();
        ((PasswordBox)Child).PasswordChanged += BindablePasswordBox_PasswordChanged;
    }

    void BindablePasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
    {
        Password = ((PasswordBox)Child).Password;
    }

}
5
ответ дан 30 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: