/ / Оптимален начин за попълване на голям брой текстови полета в MVVM - c #, .net, wpf, mvvm, .net-4.0

Оптимален начин за попълване на голям брой текстови полета в MVVM - c #, .net, wpf, mvvm, .net-4.0

Понастоящем създавам приложение за WPFMVVM. Имам голям брой текстови кутии в прозореца (около 20), които трябва да бъдат обвързани със специфични елементи в списък и трябва да бъдат населени наведнъж. Обикновено ги избутах в масив и ги напълних по този начин, но не мога да го направя, без да наруша модела на MVVM. Има ли бърз и ефективен начин да го направя, докато все още се придържам към MVVM?

Отговори:

2 за отговор № 1

Не виждам защо точно това ще наруши MVVM, ако вместо да използвате масив, сте използвали списък, поставете го във вашия ViewModel и след това използвайте индексираното свързване, за да се свържете със специфични елементи.

Нещо като:

<StackPanel>
<TextBox Text="{Binding MyViewModelList[0]}">
<TextBox Text="{Binding MyViewModelList[1]}">
<TextBox Text="{Binding MyViewModelList[2]}">
</StackPanel>

или ако искате нещо по-динамично, вместо списък, поставете observablecollection във вашето VM и го свържете в ItemControl с DataTemplate.

<ItemsControl ItemsSource="{Binding Path=MyViewModelObsCol}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

Синтаксисът може да не е 100%, тъй като нямам IDE да тествам, но нещо по този начин може да бъде това, което след това.


5 за отговор № 2

Можете да свържете списъка си с един ItemsControl и да промените шаблона на елемента, за да бъдете а TextBox.

<ItemsControl ItemSource={Binding aList}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Text}"  />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

1 за отговор № 3

Ако се опитвате да попълвате текстови полета в основите на селекцията в списъка Опитайте тази Друга опция е създаването на източник за изгледи за справки, който не мисля, че ще изисквате тук