在PowerShell v2中,我试图仅向数组添加唯一值.我已经尝试过使用if语句,粗略地说,如果(-not $ Array -contains'ThourValue'),然后添加值,但这只是第一次有效.我已经放了一个简单的代码片段,它显示了我正在做的不起作用以及我做了什么作为一种有效的解决方法.有人可以告诉我我的问题在哪里吗?
Clear-Host
$Words = @('Hello', 'World', 'Hello')
# This will not work
$IncorrectArray = @()
ForEach ($Word in $Words)
{
If (-not $IncorrectArray -contains $Word)
{
$IncorrectArray += $Word
}
}
Write-Host ('IncorrectArray Count: ' + $IncorrectArray.Length)
# This works as expected
$CorrectArray = @()
ForEach ($Word in $Words)
{
If ($CorrectArray -contains $Word)
{
}
Else
{
$CorrectArray += $Word
}
}
Write-Host ('CorrectArray Count: ' + $CorrectArray.Length)
Run Code Online (Sandbox Code Playgroud)
第一种方法的结果是一个只包含一个值的数组:"Hello".第二个方法包含两个值:"Hello"和"World".任何帮助是极大的赞赏.
这让我很沮丧.我有一个简单的WPF切换按钮,有两个IsChecked触发器.一个值为true,另一个值为false.没有选中按钮时,它工作正常,我的样式为false; 但是,当IsChecked为true时,系统永远不会应用该样式.它总是只使用默认的蓝色镀铬窗口样式.有任何想法吗?
<ToggleButton Content="Control 1" Width="200" Margin="0,0,0,10" Focusable="False">
<ToggleButton.Resources>
<Style TargetType="{x:Type ToggleButton}">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="LawnGreen" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="1"/>
<GradientStop Color="Red" Offset="0.307"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Resources>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.我确定这是显而易见的,我只是在俯视.