MVVM View Binding - PullRequest
       1

MVVM View Binding

1 голос
/ 09 июля 2011

Допустим, у меня есть список предметов.Поэтому у меня есть 2 вида: ListView и ItemView.

У меня также есть 2 ViewModels: ListViewModel и ItemViewModel.

В ListViewModel я создаю и инициализирую ObservableCollection ItemViewModels.В ListView у меня есть ListBox с ItemTemplate -> ItemView и ItemSource, связанный с ObservableCoolection в ListViewModel.Я хочу привязать каждый ItemView к каждому ItemViewModel, чтобы иметь возможность использовать привязку в ItemView.xaml, но не могу этого достичь.

1 Ответ

2 голосов
/ 09 июля 2011

Из вашего вопроса я понял, что вы хотите привязать ItemViewModel к ItemView.xaml, а ваш ListBox находится в каком-то другом xaml (скажем, ListBox.xaml).Вы не хотите применять привязку, связанную с ItemViewmodel и ItemVIew в ListBox.xaml.Если это была проблема, вы можете легко создать отображение DataTemplate для достижения следующего:

<Window
    xmlns:vw="namespace of your view files (i.e. xaml files. ListBox.xaml and ItemView.xaml)"
    xmlns:ViewModels="namespace of your view model files (i.e. ItemViewModel.cs, ListBoxViewModel.cs)">
    <Window.Resources>
        <DataTemplate DataType="{x:Type ViewModels:ItemViewModel}">
                <vw:ItemView />
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <ListBox ItemsSource="{Binding Path=List of ItemViewmodel in ListBoxViewModel.cs}"
    </Grid>
</Window>

Затем ваш класс ItemViewModel будет сопоставлен с ItemView, как указано в разделе Ресурсы, без ключа.Теперь вы можете применить привязку в ItemView.xaml.Послушайте, вам не нужно назначать Itemtemplate для ListBox, который будет разрешен автоматически.Если вы все равно хотите указать ItemTemplate (и не хотите указывать ресурс), напишите это:

<ListBox.ItemTemplate>
    <DataTemplate>
        <vw:ItemView />
    </DataTemplate>
</ListBox.ItemTemplate>

Любой способ должен работать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...