我目前正在自定义ListBox。我的意思是将图像元素,第二个线元素等添加到一个listItem。
itemSource是C#中的List,因此我没有预览Expression Blend / VS中的项目。这就是痛苦。
因为我总是编辑XAML然后部署以进行检查。这种情况一直持续到最后一个像素是正确的。
有没有办法在Blend / VS中使用自定义项目(使用动态itemSource)编辑ListBox?
这真的会加速我的发展。
答案 0 :(得分:1)
如果要在设计时查看控件的外观,则必须使用SampleData。有几种方法可以做到,这取决于你的框架。
假设您有一个名为MainPage.xaml的页面。如果您还没有视图模型,请创建一个新模型并将其命名为MainViewModel.cs。定义将用于绑定的所有公共属性。 获得视图模型后,在名为SampleData的文件夹中创建新文件,并将其命名为MainViewModelSampleData.xaml。
现在,在MainPage.xaml中,将以下属性添加到页面元素:
d:DataContext={d:DesignData Source=SampleData/MainViewModelSampleData.xaml}
还将MainViewModelSampleData.xaml的构建操作设置为DesignData。
现在,如果要在MainPage中显示数据,则需要在示例数据文件中定义所有属性。例如:
// view model contains public properties Title of type string and Children of type
// PersonViewModel which contains properties Name and Age (string and int respectively)
<local:MainViewModel xmlns:local="clr-namespace:myapp"
Title="Title">
<local:MainViewModel.Children>
<local:ChildViewModel Name="John" Age="31" />
</local:MainViewModel.Children>
</local:MainViewModel>
您现在应该在设计视图中看到您的页面充满了数据。通过使用MVVM,您可以快速创建模拟数据。这将确保您可以在不运行应用程序的情况下围绕现有数据设计视图。
详细了解以下链接:
答案 1 :(得分:0)
我现在知道该怎么做了。 如果你们有人偶然发现这个问题,请执行以下操作:
将您在itemtemplate的堆栈面板中写下的所有XAML复制
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
//...
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
并将其复制到<ListBox> //Here </ListBox>
在那里你可以在设计师中进行编辑。
完成后,只需将代码复制回StackPanel。