Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пренаправление событий 
V
    Опции темы
RastaDja
Дата 26.3.2012, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



   Доброго времени суток.
   Суть задачи - создать список (ListBox), эдементы которого можна сворачивать (использую Expander). Внутри этих елементов вложен контрол (обертка над Swordfish chart). 
   Проблема заключается в том, что контрол реагирует на нажатие кнопок мыши. При встраивание его в шаблон, контрол не реагирует на нажатие левой кнопки мыши (нажатие правой работает). Насколько я правильно понял, Expander перехватил событие нажатия левой кнопки, но решить данную проблему я не умею.
   Подскажите, пожалуйста, как сделать так, чтоб на события нажатия реагировал мой контрол, а не Expander.

   
Код

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sp ="clr-namespace:org.WPF.View;assembly=org.WPF.View"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>       
        <DataTemplate x:Key="ListTmpl">
            <Expander BorderThickness="2" Margin="2" BorderBrush="Black" FontFamily="Calibri" >
                <!-- <Expander FontFamily="Calibri" >-->
                <Expander.Header>
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                       
                    </Grid>
                </Expander.Header>
                <Expander.Content>

                    <DockPanel Margin="4">
                       <!--  ВОТ МОЙ КОНТРОЛ. Именно он не реагирует на нажатие лев. кноп. мышки -->
                        <sp:Viewer Primitives="{Binding Data}" Height="200" VerticalAlignment="Top"></sp:Viewer>
                     
                    </DockPanel>

                </Expander.Content>
            </Expander>
        </DataTemplate>
    </Window.Resources>
    <Grid>
       
        <StackPanel>
            <ListBox ScrollViewer.CanContentScroll="False" Name="list" VerticalContentAlignment="Stretch"  HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Auto"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemTemplate="{StaticResource ListTmpl}"/>
        </StackPanel>
    </Grid>
</Window>


Спасибо.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
ababab
Дата 27.3.2012, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 29.4.2011

Репутация: нет
Всего: нет



Код

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        
        Title="MainWindow"
        Height="350"
        Width="525">
    <Window.Resources>
        <DataTemplate x:Key="ListTmpl">
            <Expander BorderThickness="2"
                      Margin="2"
                      BorderBrush="Black"
                      FontFamily="Calibri">
                <!-- <Expander FontFamily="Calibri" >-->
                <Expander.Header>
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.RowDefinitions>
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>

                    </Grid>
                </Expander.Header>
                <Expander.Content>
                    <DockPanel Margin="4">
                        <Button Content="123" />
                    </DockPanel>
                </Expander.Content>
            </Expander>
        </DataTemplate>
    </Window.Resources>
    <Grid>

        <StackPanel>
            <ListBox ScrollViewer.CanContentScroll="False"
                     Name="list"
                     VerticalContentAlignment="Stretch"
                     HorizontalContentAlignment="Stretch"
                     ScrollViewer.VerticalScrollBarVisibility="Auto"
                     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                     ItemTemplate="{StaticResource ListTmpl}" />
        </StackPanel>
    </Grid>
</Window>


Кнопка фокусится и нажимается.

Попробуйте IsHitTestVisible="False" для родительских вашему контролу контейнеров (Expander, DockPanel, etc).

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  1.PNG 13,60 Kb
PM MAIL   Вверх
RastaDja
Дата 27.3.2012, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



Цитата(ababab @  27.3.2012,  09:06 Найти цитируемый пост)
Кнопка фокусится и нажимается.

Да, кнопка нажимается, а мой крнтрол не реагирует на нажатие левой кнопки. При чем, это только в шаблоне, если его разместить на форму - все нормально.
Цитата(ababab @  27.3.2012,  09:06 Найти цитируемый пост)
Попробуйте IsHitTestVisible="False" для родительских вашему контролу контейнеров (Expander, DockPanel, etc). 

В этом случае блокируются все нажатия моего контрола. Это не помогает. (ах да. нужно не только нажимать, но и тянуть за левую кнопку мышки).


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
RastaDja
Дата 27.3.2012, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



нашлось решение, это оказалось пузырьковой маршрутизацией события.
Код

private void SpViewer_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            e.Handled = true;
        }



--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.