Понастоящем създавам приложение за 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
Ако се опитвате да попълвате текстови полета в основите на селекцията в списъка Опитайте тази Друга опция е създаването на източник за изгледи за справки, който не мисля, че ще изисквате тук