我正在尝试学习WPF,当然还在努力学习XAML。我正在查看具有Items
属性的the ListBox control。所以我先尝试一下:
<ListBox HorizontalAlignment="Left" Height="213" Margin="75,61,0,0" VerticalAlignment="Top" Width="218">
<Items>
First
Second
Third
</Items>
</ListBox>
我收到编译错误:
Windows Presentation Foundation(WPF)不支持项目 项目
我注意到在上面链接的MSDN页面中我应该使用这种语法:
<ListBox HorizontalAlignment="Left" Height="213" Margin="75,61,0,0" VerticalAlignment="Top" Width="218">
<ListBoxItem>First</ListBoxItem>
<ListBoxItem>Second</ListBoxItem>
<ListBoxItem>Third</ListBoxItem>
</ListBox>
我该怎么推断?什么WPF机制说我必须做后者,甚至不能使用某些属性(例如Items
)?根据文档,ListBox
控件具有Items
属性,所以我缺少什么?
其次,我从this MSDN article知道我可以使用这样的数据模板:
<ListBox HorizontalAlignment="Left" Height="213" Margin="75,61,0,0" VerticalAlignment="Top" Width="218">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding XPath=@desc}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
其中有TextBlock
替换数据源中的每个项目。但是,这似乎表明我将被迫像这样制定上述XAML( 工作):
<ListBox HorizontalAlignment="Left" Height="213" Margin="75,61,0,0" VerticalAlignment="Top" Width="218">
<ListBoxItem><TextBlock>First</TextBlock></ListBoxItem>
<ListBoxItem><TextBlock>Second</TextBlock></ListBoxItem>
<ListBoxItem><TextBlock>Third</TextBlock></ListBoxItem>
</ListBox>
而不是:
<ListBox HorizontalAlignment="Left" Height="213" Margin="75,61,0,0" VerticalAlignment="Top" Width="218">
<ListBoxItem>First</ListBoxItem>
<ListBoxItem>Second</ListBoxItem>
<ListBoxItem>Third</ListBoxItem>
</ListBox>
后者是如何工作的,我怎么推断它有效?这个魔术行为有名字吗?
答案 0 :(得分:1)
如果您正在启动WPF,我可以给您最好的提示,并且您想知道哪个控件可以放在哪里,您应该直接在Visual Studio中开发,因为您将拥有将告诉您的intellisense哪个区块可以去哪里。
关于第一个问题, 在这种情况下,&#34;项目&#34;你说的是属性,不能像这样使用属性,它可以使用:
<ListBox Items="whatever"/>
或
<ListBox>
<ListBox.Items>
Something
</ListBox.Items>
</ListBox>
<强>但是强>
项目不是您可以在xaml中真正使用的属性,它只是一个可以在c#代码隐藏中使用的属性,用于查看列表框中的项目。
至于第二个问题, 每个控件都有一个&#34;默认&#34;您可以在不指定的情况下设置的属性,例如&#34; TextBlock&#34;。您可以在开始和结束标记之间编写文本,而无需写下您正在修改Text属性。
<TextBlock>Test Text</TextBlock>
而不是
<TextBlock Text="Test Text"/>
在你的&#34; ListBoxItem&#34; case,默认属性是Content。如果您在其中写入文字,内容会写入文字,但您也可以在其中放置更多的块来展开文字。
<ListBox>
<ListBoxItem>This text will appear</ListBoxItem>
<ListBoxItem>
<StackPanel Orientation="Vertical">
<TextBlock Text="This text will appear in the middle"/>
<TextBlock>This Text will appear last</TextBlock>
</StackPanel>
</ListBoxItem>
</ListBox>
内容属性只能容纳1件事,因此你需要放置一个&#34; StackPanel&#34;(或任何其他面板)来保存多个块。
如果您需要有关列表框的更多详细信息,可以去那里: http://www.wpf-tutorial.com/list-controls/listbox-control/
答案 1 :(得分:0)
我个人建议订阅像PluralSight或Lynda这样的东西。
你学到80%的知识,但远远少于你在书中读到的内容。
打开Visual Studio,然后按照教程视频进行操作,输入Visual Studio。如果导师领先于您,请暂停。你需要很多基础知识,这是获得它的最佳方式。挂在那里,一旦点击,WPF非常好用。
免责声明:我与这两家公司无关。