我創建了一個類似於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