powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Получения данных из DataGrid WPF MVVM
25 сообщений из 450, страница 8 из 18
Получения данных из DataGrid WPF MVVM
    #38464540
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККак же я сразу не догадался.
Не понял сарказма... :)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464542
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБесит нативное отсутствие System.ComponentModel.DataAnnotations для валидации... Ну что за свинство :( Ну хоть IDataErrorInfo есть и то хорошо."Используй ValidationRule, Люк!" (ц)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464543
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККак же я сразу не догадался.
Не понял сарказма... :)А я не понял накой мне эти педали лишний слой. :-)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464545
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К"Используй ValidationRule, Люк!" (ц)
А если у меня сложная валидация? Сейчас работает вот так, вроде устраивает:

...
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<Window x:Class="WpfApplication.EmployeeDetailWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Карточка сотрудника" Height="249" Width="338" WindowStartupLocation="CenterOwner" ResizeMode="NoResize">
    <Window.Resources>
        <Style TargetType="TextBox">
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <StackPanel Orientation="Horizontal">
                            <AdornedElementPlaceholder/>
                            <TextBlock Foreground="Red" Padding="1">*</TextBlock>
                        </StackPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid FocusManager.FocusedElement="{Binding ElementName=LastName}">

        <TextBox KeyboardNavigation.TabIndex="0" x:Name="LastName" Text="{Binding LastName, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="302"/>

        <TextBox KeyboardNavigation.TabIndex="1" x:Name="FirstName" Text="{Binding FirstName, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="23" Margin="10,38,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="302"/>

        <Button KeyboardNavigation.TabIndex="3" IsCancel="True" Content="Отмена" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75" />

        <Button KeyboardNavigation.TabIndex="2" Command="{Binding SaveCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext}" Content="Сохранить" HorizontalAlignment="Right" Margin="0,0,90,10" VerticalAlignment="Bottom" Width="75">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="IsEnabled" Value="False" />
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=LastName, Path=(Validation.HasError)}" Value="false" />
                                <Condition Binding="{Binding ElementName=FirstName, Path=(Validation.HasError)}" Value="false" />
                            </MultiDataTrigger.Conditions>
                            <Setter Property="IsEnabled" Value="True" />
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </Grid>
</Window>

...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464548
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА я не понял накой мне эти педали лишний слой. :-)
Тестирование, моки, слабосвязность, чистота кода, общее душевное равновесие :)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464556
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вью модель:

...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
public class EmployeeViewModel : IDataErrorInfo
{
    private IDataContext Context;
    private IWindowService Service;

    public EmployeeViewModel()
    {
        Context = new DataContext(); // todo IoC resolve
        Service = new WindowService(); // todo IoC resolve
    }

    public int EmployeeId { get; set; }

    public string FirstName { get; set; }
        
    public string LastName { get; set; }

    public ICommand SaveCommand
    {
        get
        {
            return new RelayCommand((action) =>
            {
                if (Service.IsValid)
                {
                    var vm = action as EmployeeViewModel;
                    Context.UpdateEmployee(vm.EmployeeId, vm.FirstName, vm.LastName);
                    Service.CloseActiveWindow(true);
                }
            });
        }
    }

    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get
        {
            if (columnName == "FirstName")
            {
                if (string.IsNullOrEmpty(this.FirstName))
                {
                    return "Значение не должно быть пустым";
                }
            }

            if ((columnName == "LastName"))
            {
                if (string.IsNullOrEmpty(this.LastName))
                {
                    return "Значение не должно быть пустым";
                }
            }

            return null;
        }
    }
}

...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464604
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА если у меня сложная валидация?Я сложную валидацию делаю на сервере при сохранении записи. И ниипёт... :-)

Клиентская валидация - это так, бантик...
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464607
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА я не понял накой мне эти педали лишний слой. :-)
Тестирование, моки, слабосвязность, чистота кода, общее душевное равновесие :)Чё тут тестировать? Тестировать надо модель. А она вообще на сервере...
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464623
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБесит нативное отсутствие System.ComponentModel.DataAnnotations для валидации... Ну что за свинство :( Ну хоть IDataErrorInfo есть и то хорошо.
да он еще с времен царя есть)) наше все.
Алексей, поделись своими расширениями для Тасков)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464630
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей, поделись своими расширениями для Тасков)Ну я когда выложу мануал там это тоже будет.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464638
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ сложную валидацию делаю на сервере при сохранении записи. И ниипёт... :-)
Сервер само собой, клиенту доверять нельзя. Я о том, что XAML валидация намного слабее по возможностям, чем C# валидация в IDataErrorInfo.

Алексей ККлиентская валидация - это так, бантик...
Согласен, но нужно же подсветить клиенту то, что не прошло валидацию на том же сервере. И для этого ValidationRule как бы курит в сторонке.

Алексей КЧё тут тестировать? Тестировать надо модель. А она вообще на сервере...
Уволен без выплаты материального пособия :) Методика тестирования WPF приложений - Microsoft
Unit-тестированиеприменительно к UI: Тестируется ViewModel(Controller) и опосредовано Model

netivanМСУБесит нативное отсутствие System.ComponentModel.DataAnnotations для валидации... Ну что за свинство :( Ну хоть IDataErrorInfo есть и то хорошо.
да он еще с времен царя есть)) наше все.
Алексей, поделись своими расширениями для Тасков)
Выделел красным. Перечитай еще раз, вдумайся в сказанное, осмысли :)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464856
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЯ сложную валидацию делаю на сервере при сохранении записи. И ниипёт... :-)
Сервер само собой, клиенту доверять нельзя. Я о том, что XAML валидация намного слабее по возможностям, чем C# валидация в IDataErrorInfo.

Алексей ККлиентская валидация - это так, бантик...
Согласен, но нужно же подсветить клиенту то, что не прошло валидацию на том же сервере. И для этого ValidationRule как бы курит в сторонке.
Мне его хватает. А будешь ворчать, вообще делать валидацию на клиенте не буду.
МСУАлексей КЧё тут тестировать? Тестировать надо модель. А она вообще на сервере...
Уволен без выплаты материального пособия :) Методика тестирования WPF приложений - Microsoft
Unit-тестированиеприменительно к UI: Тестируется ViewModel(Controller) и опосредовано ModelТебя SeVa что ли опять укусил?

Что там во вьюмодели тестировать? Там логика типа "отключить кнопку редактирования если список пустой". Ты это тестировать собрался? У меня вся прикладная логика в модели.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464892
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне его хватает. А будешь ворчать, вообще делать валидацию на клиенте не буду.
Не гунди, а слухай сюда :) Сделай мне вот такую элементарную валидацию на XAML 14147407

Алексей КЧто там во вьюмодели тестировать?
Не спорь, верь мне. Я знаю, что нужно делать )
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464907
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМне его хватает. А будешь ворчать, вообще делать валидацию на клиенте не буду.
Не гунди, а слухай сюда :) Сделай мне вот такую элементарную валидацию на XAML 14147407 В WPF можно делать валидаторы для нескольких полей. Смотри BindingGroup .
МСУАлексей КЧто там во вьюмодели тестировать?
Не спорь, верь мне. Я знаю, что нужно делать )Что-то мне подсказывает, что я могу потом пожалеть об этом.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464963
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, ты мне напоминаешь "й" :)

...
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38464979
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей К, ты мне напоминаешь "й" :)Что-то в этом есть. :-)

Кстати, а ты чё такой довольный? Уверен, что в WinRT есть поддержка IDataErrorInfo? В прошлый раз её не было.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465040
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККстати, а ты чё такой довольный?
Так разбанили же намедни
...[img=http://oboiki.net/uploads/photos/show/[30]_1_Feb_12_[31]_13_Aug_12/3298_kote.jpg]


Алексей КУверен, что в WinRT есть поддержка IDataErrorInfo? В прошлый раз её не было.
Вот тут не скажу, ибо не знаю.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465185
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

чувствуется друное влияние MVC
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465195
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ, чувствуется друное влияние MVC
Хороший фреймворк может избаловать...
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465206
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ,

чувствуется дурное влияние MVC SeVa
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465257
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, а я не понял, кули мы такие весёлые? В РЖД уже что, всё работает?
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465369
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:-)
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465393
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, ну чё, набросал по сути концепт. Ты, как терминатор впф'а, должен экспертно оценить, насколько качественен код :)
Писал на чистой нативщине без привлечение сторонних библиотек и ужасного гавнокода . Просто, понятно, без фанатизма.

И чё вы так все ссытесь этого mvvm, в 99% случаев его хватает с лихвой для написание вменяемого кода. Одно удовольствие корёжить вью, когда у тебя ничего не сыпется из-за унылого код бехайнда. Хоть грохни всё представление, программа будет работать.
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465394
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Получения данных из DataGrid WPF MVVM
    #38465402
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: c#
1.
var grid = ActiveWindow.FindName("employeesGrid") as DataGrid;


Код: c#
1.
var grid = (DataGrid)ActiveWindow.FindName("employeesGrid");


Я бы начал с этого.
...
Рейтинг: 0 / 0
25 сообщений из 450, страница 8 из 18
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Получения данных из DataGrid WPF MVVM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]