我是 WPF 新手,但对将列表框控件绑定到视图模型中的可观察集合非常熟悉。
在我当前的项目中,我们有一个 ListBox,用于导航到框架框中的不同页面。我想向第一个 ListBoxItem 添加一些显示信息,以显示正在处理哪个对象(在本例中为场景)(它在前一帧中选择,在后续帧中可见)。ListBox 本身使用 xaml 中定义的静态列表,因此它没有绑定到 ViewModel 中的任何内容。CurrentScenario 是 ViewModel 上的一个属性。我能够将标签添加到包含此 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 中可能存在一些我缺少的基本内容。或两者...
谢谢,如果有人有任何想法!