【问题标题】:PowerShell XAML ListBox Add_DoubleClickPowerShell XAML 列表框 Add_DoubleClick
【发布时间】:2018-07-06 20:09:36
【问题描述】:

快速的。我想将 Add_DoubleClick() 添加到 PowerShell 中的 ListBox 中,但这不适用于通过 XAML 文件实现的 ListBox ...我被卡住了

我将非常感谢这里的任何帮助...

我仍然有消息警告,我的帖子主要是代码,所以我需要在这里写一些东西......

# $ErrorActionPreference= 'silentlycontinue'
Add-Type -AssemblyName PresentationFramework, PresentationCore, WindowsBase, System.Windows.Forms, System.Drawing 

$ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$AssemblyLocation = Join-Path -Path $ScriptPath -ChildPath .\themes
foreach ($Assembly in (Dir $AssemblyLocation -Filter *.dll)) {
[System.Reflection.Assembly]::LoadFrom($Assembly.fullName) | out-null
}

[xml]$xaml = @"
<Controls:MetroWindow
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    Title="ddd" 
    Height="500" 
    Width="800"
    BorderThickness="0" 
    GlowBrush="{DynamicResource AccentColorBrush}"
    ResizeMode="CanResizeWithGrip"
    WindowStartupLocation="CenterScreen">

    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cyan.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
            </ResourceDictionary.MergedDictionaries>


    </Window.Resources>

<Grid>
    <ListBox SelectionMode="Single" ItemsSource="{Binding}" x:Name="ListBox" HorizontalAlignment="Right" Height="100" Margin="244,144,0,0" VerticalAlignment="Top" Width="112">
        <ListBoxItem Content="Coffie"></ListBoxItem>
    </ListBox>

</Grid>
</Controls:MetroWindow>
"@

#Read the form
$Reader = (New-Object System.Xml.XmlNodeReader $xaml) 
$Form = [Windows.Markup.XamlReader]::Load($reader) 

#AutoFind all controls
$xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]")  | ForEach-Object { 
New-Variable  -Name $_.Name -Value $Form.FindName($_.Name) -Force 
}

$ListBox.Items.AddRange()
$ListBox.Add_DoubleClick({
$TextBox2.AppendText("dddd`r`n")
})
...`

【问题讨论】:

  • “不起作用”信息不足。什么不起作用?有错误吗?什么都没有发生?
  • 请将所有代码发布到您的表单中
  • 看WPF Listbox控件上的事件列表,你的意思是MouseDoubleClick吗?
  • @EBGreen 什么都没发生...我使用了 MouseDoubleClick 事件和简单的 Add_Click...这里仍然没有...我编辑了操作。

标签: powershell xaml listbox


【解决方案1】:

我对我的问题使用了不同的方法:

$smth.Add_IsMouseCapturedChanged({
 $smth.SelectedIndex = -1
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多