Пользовательский элемент управления WPF, полученный из UserControl, не отвечающего на MouseClick - PullRequest
1 голос
/ 28 сентября 2010

У меня есть простой пользовательский элемент управления, производный от UserControl со следующим XAML:

<UserControl x:Class="EMS.Controls.Dictionary.MapTip"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:slData="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
       xmlns:infrv="clr-namespace:OCC600.Infrastructure.Interface.Views;assembly=EMS.OCC600.Infrastructure.Interface"
        xmlns:igDP="http://infragistics.com/DataPresenter"       x:Name="root"                   
      > 

    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="../Resources/Styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <Viewbox x:Name="viewBox" >
        <Border CornerRadius="10" Background="#80000000" BorderBrush="Black">                 
            <Grid Name="contentGrid" Margin="0,20,0,0" >            
                <Grid.RowDefinitions>              
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>                   
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>                  
                </Grid.ColumnDefinitions>              

                <Border Grid.Row="2" Margin="5" Grid.ColumnSpan="2" Visibility="Visible" >                                                  
                    <igDP:XamDataGrid Margin="5"                                      
                                      Name="IdentifyDetailsDataGrid"     
                                      Style="{StaticResource readonlyGrid}"  
                                      ClipToBounds="False">                        
                        <igDP:XamDataGrid.FieldLayoutSettings>
                            <igDP:FieldLayoutSettings                         
                                AutoGenerateFields="True"                                                                                                                                   
                                HighlightAlternateRecords="True"                                
                                FilterUIType="LabelIcons"
                                AllowAddNew="False" 
                                AllowDelete="False"                                                                 
                                SelectionTypeCell="Single"                                
                                SelectionTypeField="Single"                        
                                />
                        </igDP:XamDataGrid.FieldLayoutSettings>
                        <igDP:XamDataGrid.FieldSettings>
                            <igDP:FieldSettings
                                LabelClickAction="SortByOneFieldOnly"                                 
                                AllowEdit="False" 
                                AllowGroupBy="True"                                 
                                CellClickAction="SelectRecord"                            
                                ExpandableFieldRecordHeaderDisplayMode="NeverDisplayHeader"/>
                        </igDP:XamDataGrid.FieldSettings>
                    </igDP:XamDataGrid>                    
                </Border>          
        </Grid>   
        </Border>
    </Viewbox>  
</UserControl>

Экземпляр этого Maptip добавляется в DragCanvas, предоставленный JSmith здесь: http://www.codeproject.com/KB/WPF/DraggingElementsInCanvas.aspx

Этот элемент управления динамически предоставляется на панели инструментов с кнопками, привязанными к командам в ViewModel.Когда я нажимаю на кнопки, ничего не происходит.Однако если я заменю базовый класс Maptip на класс System.Windows.Primitives.Popup, кнопки реагируют на события события щелчка мыши, и команды выполняются, когда этот maptip добавляется на холст перетаскивания.

Любые намеки на то, что я вижу здесь?

TIA.

1 Ответ

1 голос
/ 29 сентября 2010

Пришлось делать с пользовательскими DragConvas, переопределяющими OnPreviewMouseLeftButtonDown. Вместо этого было изменено значение OnMouseLeftButtonDown, и мой элемент управления теперь видит щелчки мыши. Получил подсказку по ссылке:

http://www.codeproject.com/KB/WPF/DraggingElementsInCanvas.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...