我目前正在尝试使用ViewModel的Design Data来模拟我的视图数据。具体来说,我有一个View前端,以及一个用于我的silverlight应用程序的ViewModel后端。
当我嘲笑其他观点时,情况完美无缺。即使在这种特殊观点中,唯一的问题似乎也必须与馆藏有关。
知道为什么我的" CategoryItem"当我尝试将值分配给" CategoryName"时,一直给我一个错误。我不知道造成这个问题的原因......
以下代码:
我的设计数据:
<vm:MainPageViewModel
xmlns:vm="clr-namespace:WebCatalog.ViewModels"
xmlns:m="clr-namespace:WebCatalog.Models"
SelectedTab="Category 1"
ProjectName="New Project Name"
ShowPopup="False"
IsBusy="False"
CurrentUser="Alex"
>
<vm:MainPageViewModel.Categories>
<m:CategoryItem CategoryName="test"/>
</vm:MainPageViewModel.Categories>
</vm:MainPageViewModel>
我简化的ViewModel:
public class MainPageViewModel {
public string SelectedTab {get;set;}
public string ProjectName {get;set;}
public bool ShowPopup {get;set;}
public bool IsBusy {get;set;}
public string CurrentUser {get;set;}
public ObservableCollection<CategoryItem> Categories {get;private set;}
public MainPageViewModel()
{
Categories = new ObservableCollection<CategoryItem>();
}
}
最后,我的(简化)视图:
<UserControl
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DataContext="{d:DesignData Source=../SampleData/MainWindowSampleData.xaml}">
<!-- Decision Categories -->
<StackPanel Width="200" toolkit:DockPanel.Dock="Left" Height="100">
<TextBlock Text="{Binding CurrentUser}">meep</TextBlock>
<ItemsControl Height="100" ItemsSource="{Binding Categories}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>Itemalkdjfa;ldfj;lakdsjfladfjal;dfjaldfja</TextBlock>
<TextBlock Text="{Binding CategoryName}"></TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
答案 0 :(得分:0)
在您的VM更改
vm.SeeDetails = function SeeDetails(LogID) {
if (vm.ShowDetails == 'false') {
vm.ShowDetails = 'true';
} else {
vm.ShowDetails = 'false';
}
setTimeout( function() { $scope.$apply(); }, 0 );
}
到
public ObservableCollection<CategoryItem> Categories {get;private set;}
否则我的样本xaml绑定在设计模式下看起来像这样:
public ObservableCollection<CategoryItem> Categories {get;set;}
...
<local:MainVM x:Key="myMainVM">
<local:MainVM.Categories>
<local:CategoryItem Name="Test" />
</local:MainVM.Categories>
</local:MainVM>
虚拟机镜像你的(没有私有集),虚拟机在Silverlight上的Xaml中加载,并以设计模式显示数据。
<ListBox DataContext="{StaticResource myMainVM}"
ItemsSource="{Binding Categories}">
<ItemsControl.ItemTemplate>
<DataTemplate><TextBlock Text="{Binding Name}"/></DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>