0
IsEnabled 및 IsChecked 속성에 대한 다중 트리거가 있습니다. 체크 박스가 비활성화 된 후에 코드로 다시 활성화되지 않는다는 점을 제외하면 잘 작동합니다. 사전에WPF에서 바인딩을 사용하여 목록보기의 체크 박스를 다시 활성화하는 방법은 무엇입니까?
For Each checkBox As CheckBox In lstRewardsEarned.Items
checkBox.IsEnabled = true
'This writes out false!
Console.WriteLine(checkBox.IsEnabled)
Next
감사 :
<ListView ScrollViewer.ScrollChanged="lstRewardsEarned_ScrollChanged" Height="178" HorizontalAlignment="Left" Margin="12,0,0,81" Name="lstRewardsEarned" VerticalAlignment="Bottom" Width="327" SelectionMode="Multiple" Background="White" FontFamily="Calibri" FontSize="16">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<!-- bind content IsSelected to the ListViewItem IsChecked -->
<Setter Property="IsSelected" Value="{Binding Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=Explicit}" />
<!-- bind content IsEnabled to the ListViewItem IsEnabled -->
<Setter Property="IsEnabled" Value="{Binding Path=IsEnabled, Mode=TwoWay, UpdateSourceTrigger=Explicit}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Border" SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<!--Highlight if IsSelected and IsEnabled-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter TargetName="Border" Property="Background" Value="Cyan"/>
</MultiTrigger.Setters>
</MultiTrigger>
<!--Remove highlight if is not Selected and IsEnabled-->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="False"/>
<Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter TargetName="Border" Property="Background" Value="Transparent"/>
</MultiTrigger.Setters>
</MultiTrigger>
<!--Add a trigger to remove the highlighting if IsEnabled is changed to false-->
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background" Value="Transparent"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
이 체크 박스를 다시 활성화하는 코드는 다음과 같습니다 여기에 XAML입니다.
감사합니다. Matt. UpdateSourceTrigger = Explicit을 꺼내 봤는데 효과가 없습니다. IsEnabled 이벤트를 발생 시키거나 다른 것을 수정해야합니까? –