2015-12-03 2 views
0

У меня есть опыт разработки веб-приложений .NET, но теперь я работаю над приложением Windows. У меня проблемы с пониманием компонентов пользовательского интерфейса.Как изменить область запуска мыши в приложении .NET Windows

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

До сих пор я обнаружил, что при нажатии на текст вызывает функцию в классе UI, ProbeTree.xaml.cs:

public partial class ProbeTree : UserControl 
{ 
    private void StackPanel_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { etc.. } 

и эта функция вызывается из файла ProbeTree.g.i.cs:

void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) { 
    switch (connectionId) 
    { 
    case 8: 

    #line 189 "..\..\..\..\UI\Protocol\ProbeTree.xaml" 
    ((System.Windows.Controls.StackPanel)(target)).PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_PreviewMouseLeftButtonDown); 

    #line default 
    #line hidden 
    break; 
    } 
} 

Это кажется что в этом файле я должен получить ссылку на всю строку и прикрепить к ней событие щелчка мыши вместо текущего параметра target. К сожалению, я не знаю, что здесь, и точки останова в этом файле не запускаются из-за No symbols have been loaded for this document.

Наконец этот код в ProbeTree.xaml также относится:

<TreeView.Resources> 
    ... many tags here ... 
    <DataTemplate DataType="{x:Type xs:VMReading}"> 
     <StackPanel Orientation="Horizontal" DataContext="{Binding}" PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown"> 
      <Label Content="{Binding Name}"></Label> 
     </StackPanel> 
    </DataTemplate> 
</TreeView.Resources> 

Любая идея, как я могу достичь своей цели?

The "Name" text is clickable

ответ

0

Попробуйте сделать вход связывания на StackPanel:

<StackPanel>  
    <StackPanel.InputBindings> 
     <MouseBinding MouseAction="LeftClick" Command="{Binding MyCommand}" /> 
    </StackPanel.InputBindings> 
</StackPanel 

Где МояКоманда определяется в модели представления в качестве System.Windows.Input.ICommand.

+0

Thanks @ C.Lucas. Можете ли вы уточнить, какой код мне нужен в модели представления? Я добавил строки, которые вы упомянули, и следующий код в модели представления: 'public void MyCommand() { Debug.WriteLine (« по вашей команде сэр! »); } ' (в этом случае файл' VMREading.cs'). Но он не вызывает – nest

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^