【问题标题】:Adding a small popup on a wpf listbox that is already using itemsource在已经使用 itemsource 的 wpf 列表框上添加一个小弹出窗口
【发布时间】:2014-07-22 11:58:52
【问题描述】:

这是我的 wpf-xaml 代码的一部分:


<ListBox x:Name="TestJobSuiteListBox" Grid.Row="1" ItemsSource="{Binding AvailableJobs}" MouseRightButtonDown="TestJobSuiteListBox_OnMouseRightButtonDown">
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <ListBoxItem Content="{Binding Name}"/>
        </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>                            
</ListBox>

我想将另一个列表框项添加到该列表框,并且我不希望它在您右键单击列表框之前可见。它也不应该绑定到“AvailableJobs”属性。

类似这样的:


<ListBox x:Name="TestJobSuiteListBox" Grid.Row="1" ItemsSource="{Binding AvailableJobs}" MouseRightButtonDown="TestJobSuiteListBox_OnMouseRightButtonDown">
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <ListBoxItem Content="{Binding Name}"/>
        </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>
    <ListBoxItem x:Name="AddJobbListBoxItem" Visibility="Hidden"></ListBoxItem>
</ListBox>

这不起作用,因为“itemsource must be empty问题”

有人知道我该怎么做吗?

我不需要可见性/右键单击功能方面的帮助。

提前致谢,希望问题可以理解。

【问题讨论】:

  • 'something like this :' 框是空的。 (固定)
  • 有人知道我该怎么做吗? 是的……你可以学习如何正确地做到这一点。你的代码太错误了,我什至无法开始帮助你。这个网站不是来教用户如何学习语言的。你应该自己做,从在线教程。从 MSDN 上的 Data Binding Overview 页面开始。

标签: wpf listbox itemsource


【解决方案1】:

您可以将列表框放入 stackPanel,并禁用它的滚动。然后将该元素也添加到列表框下的stackPanel,最后将该stackPanel 添加到scrollViewer。然后你就有了带有 AddButton 的列表框。

<ScrollViewer>
    <StackPanel>
         <ListBox ItemsSource="{Binding AvailableJobs}"
                  ScrollViewer.VerticalScrollBarVisibility="Disabled">
         <!-- ...  -->
         </ListBox>
         <Button x:Name="AddJobbButton" Visibility="Collapsed" />
    </StackPanel>
</ScrollViewer>

请注意,如果列表框中有很多项目,可能会出现一些性能问题,因为如果列表框在 stackPanel 中,我不确定列表框的虚拟化是否正常工作。

编辑:当然你必须监听鼠标事件,然后将按钮的可见性设置为可见等等......

【讨论】:

    【解决方案2】:

    我认为您必须使用ItemTemplateSelector 来实现此功能。您可以在Resources 部分根据您的要求创建不同的DataTemplate,并在xaml 中正确绑定。检查答案here,它将为您提供有关该方法的想法。也请参考这个examlpe。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多