1

我目前正在自定义一个 ListBox。我的意思是向一个 listItem 添加一个图像元素、第二个行元素等。

itemSource 是 C# 中的列表,因此我没有 Expression Blend/VS 中的项目的预览。这就是痛苦。

因为我总是要编辑 XAML 然后部署来检查。这种情况一直持续到最后一个像素正确为止。

没有办法在 Blend/VS 中编辑带有自定义项(带有动态 itemSource)的 ListBox 吗?

那真的会加快我的发展速度。

4

2 回答 2

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,您可以快速创建模拟数据。这将确保您可以围绕现有数据设计视图,而无需运行应用程序。

阅读以下链接的更多信息:

于 2013-03-19T12:44:59.667 回答
0

我现在知道该怎么做。如果有人偶然发现这个问题,请执行以下操作:

复制您在 itemtemplate 的堆栈面板中编写的所有 XAML

<ListBox.ItemTemplate>
   <DataTemplate>
       <StackPanel>
             //...
       </StackPanel>
   </DataTemplate>
</ListBox.ItemTemplate>

并将其复制到<ListBox> //Here </ListBox> 那里,您可以在设计器中对其进行编辑。

完成后,只需将代码复制回 StackPanel。

于 2013-03-19T12:30:52.423 回答