J'ai rencontré une situation dans l'application que je développais. Je veux écrire un modèle pour une case à cocher où je devrais être en mesure de désactiver uniquement la case de la marque et garder l'étiquette activée. Est-ce vraiment possible. Je suis venu avec un modèle, mais quand je désactive la case à cocher à la fois l'étiquette et la coche sont désactivés.Modèle de case à cocher dans WPF
Répondre
ont juste jeter un oeil à ce XAML
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" >
<Window.Resources>
<Style x:Key="CheckBoxFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border>
<Rectangle Margin="15,0,0,0" Stroke="#60000000" StrokeThickness="1" StrokeDashArray="1 2"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- PressedBrush is used for Pressed in Button, Radio Button, CheckBox -->
<LinearGradientBrush x:Key="PressedBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#BBB" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="0.1"/>
<GradientStop Color="#EEE" Offset="0.9"/>
<GradientStop Color="#FFF" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#444" Offset="0.0"/>
<GradientStop Color="#888" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#EEE" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="GlyphBrush" Color="#444"/>
<LinearGradientBrush x:Key="NormalBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="MouseOverBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#AAA" Offset="1.0"/>
</LinearGradientBrush>
<!-- Simple CheckBox -->
<Style x:Key="CheckBoxStyle1" TargetType="{x:Type CheckBox}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="FocusVisualStyle" Value="{DynamicResource CheckBoxFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource NormalBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource NormalBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<!-- BulletDecorator is used to provide baseline alignment between the checkmark and the Content -->
<BulletDecorator x:Name="test" Grid.Column="0">
<BulletDecorator.Bullet>
<Grid Width="13" Height="13">
<Border x:Name="Border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"/>
<Path x:Name="CheckMark" Stroke="{DynamicResource GlyphBrush}"
StrokeThickness="2"
SnapsToDevicePixels="False" Data="M 0 0 L 13 13 M 0 13 L 13 0"/>
</Grid>
</BulletDecorator.Bullet>
</BulletDecorator>
<ContentPresenter Grid.Column="1"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
RecognizesAccessKey="True"/>
</Grid>
<!-- This uses Visibility to hide and show the CheckMark on IsChecked -->
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="false">
<Setter Property="Visibility" Value="Collapsed" TargetName="CheckMark"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="{DynamicResource MouseOverBrush}" TargetName="Border"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" Value="{DynamicResource PressedBrush}" TargetName="Border"/>
<Setter Property="BorderBrush" Value="{DynamicResource PressedBorderBrush}" TargetName="Border"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" Value="gray" TargetName="Border"/>
<Setter Property="BorderBrush" Value="black" TargetName="Border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<CheckBox HorizontalAlignment="Left"
Margin="0,5,0,0" Style="{DynamicResource CheckBoxStyle1}"
VerticalAlignment="Top" Width="182" Height="17"
Content="Disabled" IsEnabled="False" IsChecked="True" />
<CheckBox HorizontalAlignment="Left"
Margin="125,5,0,0" Style="{DynamicResource CheckBoxStyle1}"
VerticalAlignment="Top" Width="182" Height="17"
Content="Active" IsEnabled="true" />
</Grid>
J'ai eu le même problème et a trouvé une solution assez stupide:
<StackPanel Orientation="Vertical" >
<TextBlock Text="Set Global Edition" TextWrapping="Wrap" HorizontalAlignment="Center" />
<CheckBox x:Name="GlobalEdition" IsChecked="{Binding IsGlobal}" HorizontalAlignment="Center" />
</StackPanel>
Depuis le TextBlock & sont séparés Checkbox, changer l'état Checkbox n'influencera pas le texte attaché.
(Si je me souviens bien, une zone de texte ne change pas son apparence si elle est désactivée, vous pouvez peut-être essayer avec une zone de texte au lieu d'une étiquette)
Eh bien, j'ai essayé avec un textbox et pas de chance avec ça aussi. Je suis en train d'écrire un modèle pour cela et le tout est désactivé lorsque la case à cocher désactiver. @ Damascus – Anee
Mettez-vous la zone de texte dans la case à cocher? Parce que cela pourrait être le problème, si elle est insite la case à cocher il sera indéniablement lié à l'état de la boîte (c'est pourquoi j'ai mis deux contrôles séparés dans un StackPanel plutôt que d'ajouter un textBlock dans le checkBox qui, comme vous venez de le voir, ne fonctionne pas de cette façon) – Damascus
Dans le modèle, j'ai mis à la fois la zone de texte et la case à cocher. @Damascus – Anee
- 1. passant modèle dans la case à cocher?
- 2. Problème de case à cocher WPF
- 3. Utilisation de case à cocher dans DataGridTemplateColumn Questions WPF
- 4. set case à cocher dans une combox à vérifié wpf
- 5. C# wpf question case à cocher personnalisée
- 6. wpf combobox avec case à cocher - selecteditem
- 7. Case à cocher d'image de case à cocher dans UITableViewCell
- 8. case à cocher case à cocher
- 9. Changer la taille de la case à cocher WPF
- 10. Afficher l'état de la case à cocher listview dans WPF
- 11. Style de case à cocher personnalisé pour WPF
- 12. Comment modifier dynamiquement un modèle de contrôle WPF à l'aide d'une case à cocher?
- 13. Comment ajouter une case à cocher dans Datagrid WPF C#
- 14. Case à cocher imbriquée
- 15. IE6 Numéro de modèle de sélection de case à cocher
- 16. WPF: boîte de message avec case à cocher ajoutée
- 17. ControlTemplate case à cocher problème
- 18. case sélectionnée dans WPF
- 19. Passer les valeurs de la case à cocher au modèle
- 20. Case à cocher dans Flex
- 21. case à cocher dans UltraGrid
- 22. Case à cocher Étiquette ci-dessus Case à cocher. Comment?
- 23. classic asp case à cocher état comme case à cocher
- 24. cablage case à cocher expandablelistview case à cocher
- 25. case à cocher lent à cocher
- 26. WPF C# Modification de la zone à cocher de la case à cocher - BATCH
- 27. faire case à cocher
- 28. case à cocher - asp.net
- 29. comment faire vérifier case à cocher et décocher WPF
- 30. Struts case à cocher
Cela fonctionne exactement comme je le voulais ... Merci beaucoup Kishore ...:) @ Kishore – Anee