Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Binding ValidationRule, Значение нужной ячейки 
V
    Опции темы
Hashashin
Дата 5.2.2010, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Всем привет.
Хочу сделать валидацию данных в DataGrid.
Смотрю пример на MSDN.
Данные привязываю с помощью мастера в VS 2010.
Код

//студия сама создает этот код
private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            FactoryWPF.DerevyannihDBDataSet DerevyannihDBDataSet = ((FactoryWPF.DerevyannihDBDataSet)(this.FindResource("DerevyannihDBDataSet")));
            // Load data into the table user. You can modify this code as needed.
            FactoryWPF.DerevyannihDBDataSetTableAdapters.userTableAdapter derevyannihDBDataSetuserTableAdapter = new FactoryWPF.DerevyannihDBDataSetTableAdapters.userTableAdapter();
            derevyannihDBDataSetuserTableAdapter.Fill(DerevyannihDBDataSet.user);
            System.Windows.Data.CollectionViewSource userViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("userViewSource")));
            userViewSource.View.MoveCurrentToFirst();
        }


Код

//и этот тоже сама
<Window.Resources>
        <my:DerevyannihDBDataSet x:Key="DerevyannihDBDataSet" />
        <CollectionViewSource x:Key="userViewSource" Source="{Binding Path=user, Source={StaticResource DerevyannihDBDataSet}}" />
</Window.Resources>


Код

             //здесь чтобы работала ValidationRules
            <DataGrid.RowValidationRules>
                <Local:nonStr/>
            </DataGrid.RowValidationRules>

            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Path=id}" ClipboardContentBinding="{x:Null}" Header="id" />
                 //ValidationRule для колонки "name"
                <DataGridTextColumn Binding="{Binding Path=name, ValidatesOnExceptions=True}" ClipboardContentBinding="{x:Null}" Header="name"
                                    EditingElementStyle="{StaticResource CellEditStyle}"/>
                <DataGridTextColumn Binding="{Binding Path=pass}" ClipboardContentBinding="{x:Null}" Header="Password" />
                <DataGridTextColumn Binding="{Binding Path=authGroupFK}" ClipboardContentBinding="{x:Null}" Header="Group" />
            </DataGrid.Columns>
        </DataGrid>


Дальше создаю класс nonStr в котором правила для валидации
Код

    public class nonStr : ValidationRule
    {
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            string name = value.ToString();

            if (name == "")
                return new ValidationResult(false, "Текст ошибки");
            return new ValidationResult(true, null);
        }

    }


Ну и собственно ничего не происходит. А хотелось бы, чтобы на пустое значение появлялась красная рамка, да хотя бы чтоб что-то делалось.
В примере на MSDN переменная "age" создается в классе для валидации. Каким образом она синхронизируется с <Binding Path="Age" Source="{StaticResource ods}"
             UpdateSourceTrigger="PropertyChanged" >?

PM MAIL   Вверх
Hashashin
Дата 24.2.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Не дождавшись ответов, нашел сам:
Значение присваивается texBox'у при редактировании ячейки
Код

private void dataGrid1_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            DataRowView rowView = e.Row.Item as DataRowView;
            //берется значение второй колонки редактируемой строки
            textBlock1.Text = rowView[2].ToString();
        }

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0375 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.