【发布时间】:2012-01-31 01:38:46
【问题描述】:
我正在我的应用程序中尝试主从显示:当列表框中的项目被选中时,它的详细信息显示在相邻的控件中。
此控件将包含一个测量值列表,例如高度、宽度、重量等。它还将包含一些小图形,例如绿点或红点或中等大小的图像。它还会有一些富文本。
我应该使用哪个 STANDARD WPF 控件来包含所有这些元素。我正在考虑使用列表框,但想知道是否有更好的控件可以使用。
我的主要考虑是易于编码,然后可能是代码的效率。 谢谢。
【问题讨论】:
我正在我的应用程序中尝试主从显示:当列表框中的项目被选中时,它的详细信息显示在相邻的控件中。
此控件将包含一个测量值列表,例如高度、宽度、重量等。它还将包含一些小图形,例如绿点或红点或中等大小的图像。它还会有一些富文本。
我应该使用哪个 STANDARD WPF 控件来包含所有这些元素。我正在考虑使用列表框,但想知道是否有更好的控件可以使用。
我的主要考虑是易于编码,然后可能是代码的效率。 谢谢。
【问题讨论】:
列表框表示可以使用 DataTemplate 定制的项目列表。在这种情况下,您将显示所选项目的详细信息。我实际上会使用一个容器,例如嵌套在您当前 UI 中的 Grid,并拥有一组包含所选项目详细信息的堆栈面板。
<Grid>
<StackPanel>
<StackPanel Orientation="Vertical">
<TextBlock>Detail1</TextBlock>
<TextBox></TextBox>
</StackPanel>
<StackPanel Orientation="Vertical">
<TextBlock>Detail2</TextBlock>
<TextBox></TextBox>
</StackPanel>
</StackPanel>
</Grid>
这只是一个建议,但重点是使用容器并在容器中使用一组控件 - 文本块、文本框、复选框(布尔详细信息)等...这将允许您使用任何必要的控件类型来表示所选项目的特定数据字段。
【讨论】:
您不想使用列表框,除非您有一组相似的项目,并且您希望在某个时候“选择”一个或多个项目。听起来这不是您想要的细节部分。
您确实有一个收藏,它显示在您的主列表中。您应该将主列表中的 SelectedItem 绑定到视图模型中的属性。然后,您可以将相同的属性绑定到 UI 的详细信息部分。当主列表中的选择发生更改时,您的详细信息 UI 将自动更新以反映更改。
<ListBox x:Name="masterList" ItemsSource="{Binding MyItems}" SelectedItem="{Binding MySelectedItem, Mode=TwoWay}"></ListBox>
<UserControl x:Name="detailsControl" DataContext="{Binding MySelectedItem}"> </UserControl >
【讨论】: