Я пишу простой список дел, у меня есть класс TaskItem, который содержит свойство «Completed», класс реализует inotifypropertychanged для класса и всех свойств.WPF: Пользовательский ListBoxItem с CheckBox - Ударить текст по проверенному
То, что я получаю после этого, может установить DataTrigger, поэтому, когда флажок установлен/снят флажок, текст ударяется по экрану.
мой ListBox код ниже:
<ListBox x:Name="TaskListBox" Background="#FF515658" Cursor="Arrow">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Focusable" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<CheckBox Name="CheckBoxZone" Tag="{Binding ID}" IsChecked="{Binding Completed}" Margin="0 0 0 0" Grid.Column="0"/>
<TextBlock x:Name="TaskNameLabel" Text="{Binding Name}" Foreground="White" Margin="10 -1 0 0" Grid.Column="1"/>
<Image x:Name="DelTaskButtom" Margin="8 -1 10 0" Height="10px" Width="10px" Source="../Resources/Delete.png" Cursor="Hand" Grid.Column="2" Visibility="Hidden" PreviewMouseLeftButtonDown="TaskListBoxItem_DeleteTask"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsMouseOver,RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="Visibility" TargetName="DelTaskButtom" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked,RelativeSource={RelativeSource AncestorType={x:Type CheckBox}}}" Value="True">
<Setter Property="TextBlock.TextDecorations" Value="Strikethrough" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Может кто-нибудь помочь мне с этим? я могу сделать это через XAML или мне нужно установить события и сделать это через кодовую сторону вещей.
Это тоже трюк! большое спасибо! :-) –