我创建了一个类似于Visual Studio中的错误列表控件。每个错误由具有三个值的类表示:type(枚举:错误/警告/消息),文本(字符串)和时间(DateTime)。该类还有另外两个只读获取器:TimeString(返回时间HH:MM)和Icon(返回基于类型的图标路径)。访问项目源项目
我有绑定到经由ItemsSource属性对象的一个ObservableCollection一个ItemsControl。
我现在想实现对每一个项目的上下文菜单中有两个动作:复制到剪贴板,并从列表中删除。
如何从收集从上下文菜单单击处理程序访问原来的项目吗?
这是我的XAML代码:
<ItemsControl Name="itemsControl" ItemsSource="{Binding Items, ElementName=ConsoleWindow}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="Console.Items">
<Border Name="itemBorder" BorderBrush="LightGray" BorderThickness="0,0,0,1" SnapsToDevicePixels="True" Padding="4">
<Border.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy to clipboard" />
<MenuItem Header="Delete" />
</ContextMenu>
</Border.ContextMenu>
<DockPanel>
<Image Width="16" Height="16" Source="{Binding Icon}" Margin="0,3,4,0" VerticalAlignment="Top" DockPanel.Dock="Left" />
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" DockPanel.Dock="Left">
<Run Text="{Binding Text}" />
<TextBlock Foreground="Gray" FontSize="9">
<Run Text=" (" /><Run Text="{Binding TimeString, Mode=OneWay}" /><Run Text=") " />
</TextBlock>
</TextBlock>
</DockPanel>
感谢您的帮助
另外,我不会把图标路径放在你的绑定对象上。改为使用枚举值属性上的DataTrigger或自定义IValueConverter! – 2010-06-28 13:22:43