|
WPF (Culiburn.Micro) DataGrid создать ContexMenu and Event
|
|||
---|---|---|---|
#18+
Добрый день! Существует DataGrid мне нужно добавить фитчер, по правой кнопки взывалась ContextMenu я выбираю из меню ф-цию и срабатывает событие. Но это в теории. Имеем следующее: WPF Culiburn.Micro DataGrid /* TableView.xaml */ <UserControl x:Class="Simlat.COSMOS.ManagerStation.ProjectTableView" xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc=" http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d=" http://schemas.microsoft.com/expression/blend/2008" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro" mc:Ignorable="d" d:DesignHeight="500" d:DesignWidth="1200" Background="{StaticResource DarkCanvas}" x:Name="Wizard"> <DockPanel HorizontalAlignment="Center"> <DataGrid DockPanel.Dock="Top" x:Name="ProjectTable" Margin="5,5,5,5" ItemsSource="{Binding ItemList}" > <DataGrid.ContextMenu> <ContextMenu> <MenuItem Header="Open Project Folder" cal:Message.Attach="[Event Click] = [Action ClickedFolder($dataContext)]"/> </ContextMenu> </DataGrid.ContextMenu> <DataGrid.Columns> <DataGridTextColumn Width="Auto" Header="#" Binding="{Binding Path=Number}" CanUserSort="True"/> <DataGrid.Columns> <DataGridTemplateColumn Width="Auto" Header="Project Folder"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <DataTemplate.Resources> <Style TargetType="{x:Type Button}" BasedOn="{StaticResource BlueButton}"> <Setter Property="Margin" Value="5"/> </Style> </DataTemplate.Resources> <Button Content="Open Folder" cal:Message.Attach="[Event Click] = [Action ClickedFolder($dataContext)]" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid> </DockPanel> </UserControl > /* TableViewModel.cs */ public class ProjectTableViewModel : Screen { public class ProjectTableTableItem { public uint Number { get; private set; } public IProjectData ProjectData { get; private set; } public string ProgressString { get { return String.Format("{0}/{1}", ProjectData.CompletionStage, ProjectData.TotalStagesForProject); } } public bool IsPacked { get; set; } public ProjectTableTableItem(uint number, IProjectData data) { Number = number; ProjectData = data; } } public void OnOpenProjectClickedFolder(ProjectTableViewModel.ProjectTableTableItem p) { var dialog = new System.Windows.Forms.FolderBrowserDialog(); dialog.SelectedPath = "C:\\"; if (p != null) { dialog.SelectedPath = p.ProjectData.ProjectDir + "\\"; } else { MessageBox.Show("I don't know path"); return; } dialog.ShowDialog(); } } /*=============================*/ Если вызвать событие через Button то все работает, если через ContexMenu, метод вызывается, но параметр равен "null" Может кто то сталкивался. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2013, 17:09 |
|
|
start [/forum/topic.php?fid=20&msg=38404971&tid=1403997]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 470ms |
0 / 0 |