0

这是我的 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 必须是空的问题”

任何人都知道我该怎么做?

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

在此先感谢,我希望这个问题是可以理解的。

4

2 回答 2

0

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

于 2014-07-22T12:34:01.440 回答
0

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

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

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

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

于 2014-07-22T12:16:40.730 回答