使用实时/预览编辑ListBox?

时间:2013-03-06 12:25:35

标签: c# xaml windows-phone-8

我目前正在自定义ListBox。我的意思是将图像元素,第二个线元素等添加到一个listItem。

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

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

有没有办法在Blend / VS中使用自定义项目(使用动态itemSource)编辑ListBox?

这真的会加速我的发展。

2 个答案:

答案 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。