的 的 ** **修订
只是快点,希望你们可以帮助我,但我遇到这个问题,我在混合中打开我的wp7项目,我编辑列表框项目模板,但我完成了它。我保存所有内容并返回到VS2010 for Windows phone并点击调试但我看了手机,我根本没有任何项目出现。列表框只是空白。
代码:
<ListBox toolkit:TiltEffect.IsTiltEnabled="True" x:Name="ListBox1" FontSize="42.667" FontFamily="Segoe WP SemiLight" IsSynchronizedWithCurrentItem="False" d:LayoutOverrides="VerticalAlignment">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="sp">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="False" >
<toolkit:MenuItem Header="Delete" Click="Delete_Click" Name="MenuItem1" />
<toolkit:MenuItem Header="Edit" Click="Edit_Click"/>
<toolkit:MenuItem Header="View" Click="View_Click"/>
<toolkit:MenuItem Header="Share.." Click="Share_Click"/>
</toolkit:ContextMenu>
快速简要 我正在制作的应用程序是一个简单的笔记应用程序,它将笔记保存到隔离存储中的文件夹中。它成功检索了这些项目,但我只是想让它具有标题和简要说明。这是一个项目。我已经达到了这一点,并且2个文本块有=“{Binding}”这基本上只是添加了我正在假设的标题,但我还将=“{Binding}”添加到第二个文本块,因此它基本上显示了标题他们都。有没有办法将它绑定到特定项目?像第二个文本块一样,我如何绑定它,以便它显示文本文件中的前12个字符,所以基本上它只显示标题和简要描述?
答案 0 :(得分:0)
也许您只有设计时数据? 如果您使用的是Mvvm Light DataService方法,则可以定义2个DataServices:一个用于设计时,另一个用于实时。
随便假设。看到一些样品会很高兴。
UPD:你发错了代码,这个是关于ContextMenu的。我不认为那里有约束力。
但是,一般来说,不应该有任何问题。您只需将数据反序列化为模型,比如说
public class Note
{
public string Name {get; set; }
public string Content; {get; set; }
}
然后你有List(如果你想要重命名等实时更改,甚至是ObservableCollection)。然后你只需绑定
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Content}"/>
如果您希望对12个字符的内容/描述有严格的限制,您可以添加转换器并仅添加12个第一个字符,或引入新属性
class Note
{
***
public string Description { get { return Content.Substring(0, 12); } }
}
UPD2: 好的,让我们从一开始就开始吧。首先,MVVM是Wp7应用程序的推荐模式。我相信,你可以自己谷歌信息,但这里是最重要的部分:
查看。这是你的ui的描述。在你的情况下,ListBox就在这里。
首先,创建一个新项目,然后使用NuGet安装最新的Mvvm Light(例如)。安装后,您应该看到视图模型和模型的文件夹。
创建新类注意,就像我之前描述的那样。这将是你的模特。
现在,转到viewmodel。在构造函数中,在那里添加Notes列表,将其命名为ListOfNotes。手动将多个项目添加到列表中并初始化它们(为名称和内容字段添加一些随机值)。
现在,去查看。在文件的顶部,应该有类似DataContext =“{Binding MainViewModel,Source = {StaticResource ViewModelLocator}}”。在视图内部,添加ListBox。它应该像
<ListBox ItemsSource="{Binding ListOfNotes}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Content}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
那么,现在会发生什么。当您运行应用程序时,您的视图将被初始化。它将获得MainViewModel(因为它在步骤4中设置为DataContext)。在MainViewModel的构造函数中,将初始化ListOfNotes(请参阅步骤3)。然后,当页面加载ListBox时,它会尝试在DataContext中找到ListOfNotes(在我们的例子中是MainViewModel)。它应该找到你的Notes列表,然后,ListBox的每个元素都将与ListOfNotes的每个元素相关联。正如DataTemplate中所描述的那样,它会尝试获取Note.Name和Note.Content。