【发布时间】:2011-11-30 18:49:55
【问题描述】:
首先我想原谅我的英语。
我想要实现的目标看起来很简单,但我在实现中有点迷失。
背景:我有一个 ObservableCollection 联系人。这些联系人都有 1 个或多个 ContactRoles。我将联系人绑定到 ItemsControl 的 itemssource,并希望显示联系人中每个角色的 ToggleButton。
问题:我的第一个问题是如何从具有角色的联系人列表转到屏幕上的大量切换按钮。我遇到的第二个问题是,如果我单击一个 ToggleButton,则还需要检查具有相同联系人的所有其他按钮。如果我单击属于另一个联系人的另一个切换按钮,则需要取消选中所有选中的按钮,并且需要选中属于新联系人的按钮。
我现在有什么:我现在有一个 itemscontrol 中的 itemscontrol,它的 itemtemplate 的内部 itemscontrol 正在打印 ToggleButtons,如下所示:
<Button Content="Add" Width="72" Height="27" Command="{Binding Path=AddContact}" VerticalAlignment="Top"/>
<ItemsControl ItemsSource="{Binding Path=Contacts}" IsTabStop="False" Name="Parent">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding ContactRoles}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton Content="{Binding}" CommandParameter="{Binding ElementName=Parent, Path=DataContext.Item}" Template="{StaticResource toggleButtonTemplateButtonBar}"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ViewContact}" Height="27" MinWidth="100">
</ToggleButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这部分代码正在显示。 我希望有人可以帮助我。
我还有其他一些问题是我需要创建一个继承自 ItemsControl 的自定义控件还是可以通过模板和样式来完成?
如果您需要更多信息,请告诉我。
谢谢,乔迪
编辑:
很抱歉,我没有明确提出我的问题。回来评论你。第一个 ItemsControl 的 ItemsSource 保存一个包含唯一联系人的列表,第二个 ItemsSource 保存一个属于该联系人的字符串(角色)列表。我想为所有联系人的每个角色显示一个 ToggleButton。但我认为你已经从我的代码示例中做了客串。
这张图片将显示我正在尝试做的事情。 我希望这能让事情更清楚。
【问题讨论】:
-
目前的代码有什么问题还不是很清楚。它似乎正确显示
contact roles。关于您的第二种情况(当您取消选中某些内容时),如果您提供示例场景,将更容易理解您想要实现的目标
标签: wpf itemscontrol togglebutton