public class ToolBarView : ToolBar
{
public ToolBarView()
{
this.DataContext = new ToolBarViewModel();
}
}
public ToolBarViewModel: ViewModelBase
{
public ObservableCollection<ViewModelBase> Items {get;set;}
public ToolBarViewModel()
{
// populate button view models
Items.Add(new ButtonViewModel() {Content="Button1"});
Items.Add(new ButtonViewModel() {Content="Button2"});
}
}
public class ButtonView : Button
{
public ButtonView()
{
this.DataContext = new ButtonViewModel();
}
}
public class ButtonViewModel : ViewModelBase
{
public object Content {get;set;}
}
данных В MainWindow.xamlBinding View Model для просмотра в шаблоне
<Window.Resources>
<DataTemplate x:Key="buttonTemplate" DataType="{x:Type vm:ButtonViewModel}">
<v:ButtonView Content={Binding Content}/>
</DataTemplate>
<v:ToolBarView ItemsSource="{Binding Items}"
ItemTemplate={StaticResource buttonTemplate}/>
Примечание: Я INotifyChanged в ViewModelBase классе
В MainWindow.xaml. Я думаю, что мой шаблон неправильный.ButtonView в DataTemplate создает новый экземпляр представления. Это не привязывает viewModel, который был забит в коллекции элементов ToolBar. Я пытался использовать Relative Binding. Все еще не удалось. Пожалуйста, помогите мне.
Hi HB Можете ли вы немного пояснить? Извините, я очень новичок в MVVM и все еще борется. Нужно ли удалить привязку в конструкторе ButtonVM? Как я могу перезаписать DataContext. Это будет в datatemplate? Я думаю, что я пытаюсь создать представления из VMs.VM будут созданы из xml-установки. Большое спасибо – user1202484
@ user1202484: Gaah, нет, я не могу уточнить. нет времени. Если это слишком много для вас, посмотрите вокруг, есть много вопросов о учебниках MVVM и т. П. –
Спасибо. Я уже много смотрел. Я думаю, что я довольно близко. Все еще спасибо. – user1202484