【发布时间】:2013-01-23 16:22:58
【问题描述】:
我是 WPF 新手,但我非常熟悉将列表框控件绑定到视图模型中的可观察集合。
在我当前的项目中,我们有一个 ListBox,用于导航到框架框中的不同页面。我想向第一个 ListBoxItem 添加一些显示信息,以显示正在处理哪个对象(在本例中为场景)(它在前一帧中选择,在后续帧中可见)。 ListBox 本身使用 xaml 中定义的静态列表,因此它没有绑定到 ViewModel 中的任何内容。 CurrentScenario 是 ViewModel 上的一个属性。我能够将 Label 添加到包含此 ListBox 的同一窗口并成功地将 CurrentScenario.Id 绑定到其内容,并且它已正确更新,因此我知道 Binding 语句中的路径应该正确解析。
<ListBox
Style="{StaticResource FunctionBackground}"
IsSynchronizedWithCurrentItem="True"
>
<ListBoxItem Style="{StaticResource FunctionListBoxItemStyle}">
<ListBoxItem.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Scenario" />
<TextBlock Grid.Row="1" Text="{Binding Path=CurrentScenario.Id}"/>
</Grid>
</DataTemplate>
</ListBoxItem.ContentTemplate>
</ListBoxItem>
<ListBoxItem Style="{StaticResource FunctionListBoxItemStyle}" >Parameter</ListBoxItem>
<ListBoxItem Style="{StaticResource FunctionListBoxItemStyle}" >Run</ListBoxItem>
<ListBoxItem Style="{StaticResource FunctionListBoxItemStyle}" >Results</ListBoxItem>
</ListBox>
当我尝试将此额外信息添加到列表框项目时,据我所知,列表框项目在文本块下方有一个空文本块,其中包含“场景”一词。我不明白为什么空文本框内容没有显示绑定属性的值。当我在第二个文本块的 Text 属性中放入一个普通字符串时,它会正确显示。
我想要么 ListBoxItem 内容仅设置为绑定到与 ItemSource 相关的属性,因此它忽略了绑定到其他事物的尝试,或者我可能缺少 WPF 中的一些基本内容。或者两者都...
如果有人有任何想法,谢谢!
【问题讨论】:
标签: wpf mvvm listboxitem