Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

Hi I am getting problem with checkboxes not displaying in Listview while applying theme ThemeExpressionDark.xaml.

I have collection in view model. These collection items will be binding with checkboxes inside the ListView.

My code in XAML for ListView goes like this.

 <ListView Background="Transparent" x:Name="checkedListView" SelectionMode="Multiple" ItemsSource="{Binding CollectionOfDays}" ItemTemplate="{StaticResource ItemDataTemplate}"       CheckBox.Unchecked="OnUncheckItem" SelectionChanged="SelectDays" SelectedItem="{Binding SelectedItems}">

XAML code for Checkbox DataTemplate and theme I used which is in page.Resource goes like this

<Page.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Skins/ThemeExpressionDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Style x:Key="ListViewTransparentSelection_Both" TargetType="{x:Type ListViewItem}">
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"  Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"  Color="Transparent"/>
            </Style.Resources>
        </Style>
        <local:UriToBitmapConverter x:Key="UriToBitmapConverter" />    
        <DataTemplate x:Key="ItemDataTemplate">
            <CheckBox
        x:Name="checkbox" Foreground="Wheat" Content="{Binding}" Margin="10,0,0,0"
        Command="{Binding CheckBoxCommand}" CommandParameter="{Binding ElementName=checkedListView, Path=SelectedItems}" IsChecked="{Binding    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
        </DataTemplate>            
    </ResourceDictionary>
</Page.Resources>

When I execute this XAML code collections checkbox inside the ListView are not displaying. Please let me know whether the problem with DataTemplate or Theme I am using.

Following is my Checkbox related XAML code in Theme ThemeExpressionDark.xaml.

<Style x:Key="{x:Static ToolBar.CheckBoxStyleKey}"
       TargetType="{x:Type CheckBox}">
  <Setter Property="FontSize"
          Value="10" />
  <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"
          Value="{DynamicResource CheckBoxTemplate}" />
  <Setter Property="Foreground"
          Value="{DynamicResource TextBrush}" />
</Style>
<Style TargetType="{x:Type CheckBox}">
  <Setter Property="SnapsToDevicePixels"
          Value="true" />
  <Setter Property="FocusVisualStyle"
          Value="{DynamicResource CheckBoxFocusVisual}" />
  <Setter Property="Background"
          Value="{DynamicResource NormalBrush}" />
  <Setter Property="Foreground"
          Value="{DynamicResource TextBrush}" />
  <Setter Property="BorderBrush"
          Value="{DynamicResource NormalBorderBrush}" />
  <Setter Property="Template"
          Value="{DynamicResource CheckBoxTemplate}" />
</Style>

<ControlTemplate x:Key="CheckBoxTemplate"
                 TargetType="{x:Type CheckBox}">
  <ControlTemplate.Resources>
    <Storyboard x:Key="HoverOn">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="BackgroundOverlay"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.1000000"
                              Value="1" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="HoverOff">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="BackgroundOverlay"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.4000000"
                              Value="0" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="PressedOn">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="PressedRectangle"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.1000000"
                              Value="1" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="PressedOff">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="PressedRectangle"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000"
                              Value="0" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="CheckedTrue">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckIcon"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.1000000"
                              Value="1" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="CheckedFalse">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckIcon"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.4000000"
                              Value="0" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="IndeterminateOn">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="IndeterminateIcon"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.2000000"
                              Value="1" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="IndeterminateOff">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="IndeterminateIcon"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.4000000"
                              Value="0" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="FocussedOn">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="ContentFocusVisualElement"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.1000000"
                              Value="1" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="FocussedOff">
      <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                     Storyboard.TargetName="ContentFocusVisualElement"
                                     Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000"
                              Value="0" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
  </ControlTemplate.Resources>
  <BulletDecorator Background="Transparent"
                   x:Name="bulletDecorator">
    <BulletDecorator.Bullet>
      <Grid Width="16"
            Height="16">
        <Rectangle Height="14"
                   Margin="1"
                   x:Name="Background"
                   Width="14"
                   Fill="{TemplateBinding Background}"
                   Stroke="{TemplateBinding BorderBrush}"
                   StrokeThickness="{TemplateBinding BorderThickness}" />
        <Rectangle Height="14"
                   Margin="1"
                   x:Name="BackgroundOverlay"
                   Width="14"
                   Opacity="0"
                   Fill="{x:Null}"
                   Stroke="{StaticResource HoverBrush}"
                   StrokeThickness="2" />
        <Rectangle Height="16"
                   x:Name="PressedRectangle"
                   Width="16"
                   IsHitTestVisible="false"
                   Opacity="0"
                   Stroke="{StaticResource HoverBrush}"
                   StrokeThickness="1" />
        <Path Height="10"
              Margin="1,1,0,1.5"
              x:Name="CheckIcon"
              Width="10.5"
              Opacity="0"
              Fill="{StaticResource GlyphBrush}"
              Stretch="Fill"
              Data="M102.03442,598.79645 L105.22962,597.78918 L106.78825,600.42358 C106.78825,600.42358 108.51028,595.74304 110.21724,593.60419 C112.00967,591.35822 114.89314,591.42316 114.89314,591.42316 C114.89314,591.42316 112.67844,593.42645 111.93174,594.44464 C110.7449,596.06293 107.15683,604.13837 107.15683,604.13837 z" />
        <Rectangle Height="8"
                   x:Name="IndeterminateIcon"
                   Width="10"
                   Opacity="0"
                   Fill="{StaticResource GlyphBrush}" />
        <Rectangle Height="14"
                   x:Name="DisabledVisualElement"
                   Width="14"
                   Opacity="0"
                   Fill="{StaticResource DisabledBackgroundBrush}" />
        <Rectangle Height="16"
                   x:Name="ContentFocusVisualElement"
                   Width="16"
                   IsHitTestVisible="false"
                   Opacity="0"
                   Stroke="{StaticResource HoverShineBrush}"
                   StrokeThickness="1" />
        <Rectangle Height="12"
                   x:Name="ShineRectangle"
                   Width="14"
                   IsHitTestVisible="false"
                   Opacity="1"
                   Stroke="{x:Null}"
                   StrokeThickness="1"
                   Fill="{StaticResource ShineBrush}"
                   Margin="2,2,2,2" />
      </Grid>
    </BulletDecorator.Bullet>
    <ContentPresenter RecognizesAccessKey="True"
                      Margin="5,0,0,0"
                      VerticalAlignment="Top"
                      HorizontalAlignment="Left" />
  </BulletDecorator>
  <ControlTemplate.Triggers>
    <Trigger Property="IsFocused"
             Value="True">
      <Trigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource FocussedOff}"
                         x:Name="FocussedOff_BeginStoryboard" />
      </Trigger.ExitActions>
      <Trigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource FocussedOn}"
                         x:Name="FocussedOn_BeginStoryboard" />
      </Trigger.EnterActions>
    </Trigger>
    <MultiTrigger>
      <MultiTrigger.Conditions>
        <Condition Property="IsChecked"
                   Value="True" />
        <Condition Property="IsThreeState"
                   Value="True" />
      </MultiTrigger.Conditions>
      <MultiTrigger.EnterActions>
        <BeginStoryboard x:Name="ThreeStateOn_BeginStoryboard"
                         Storyboard="{StaticResource CheckedFalse}" />
      </MultiTrigger.EnterActions>
      <MultiTrigger.ExitActions>
        <BeginStoryboard x:Name="ThreeStateOff_BeginStoryboard"
                         Storyboard="{StaticResource CheckedTrue}" />
      </MultiTrigger.ExitActions>
    </MultiTrigger>
    <MultiTrigger>
      <MultiTrigger.Conditions>
        <Condition Property="IsChecked"
                   Value="{x:Null}" />
        <Condition Property="IsThreeState"
                   Value="True" />
      </MultiTrigger.Conditions>
      <MultiTrigger.EnterActions>
        <BeginStoryboard x:Name="ThreeStateOn1_BeginStoryboard"
                         Storyboard="{StaticResource IndeterminateOn}" />
      </MultiTrigger.EnterActions>
      <MultiTrigger.ExitActions>
        <BeginStoryboard x:Name="ThreeStateOff1_BeginStoryboard"
                         Storyboard="{StaticResource IndeterminateOff}" />
      </MultiTrigger.ExitActions>
      <Setter Property="Visibility"
              TargetName="CheckIcon"
              Value="Hidden" />
    </MultiTrigger>
    <Trigger Property="IsChecked"
             Value="True">
      <Trigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource CheckedFalse}"
                         x:Name="CheckedTrue_BeginStoryboard" />
      </Trigger.ExitActions>
      <Trigger.EnterActions>
        <BeginStoryboard x:Name="CheckedTrue_BeginStoryboard1"
                         Storyboard="{StaticResource CheckedTrue}" />
      </Trigger.EnterActions>
    </Trigger>
    <Trigger Property="IsMouseOver"
             Value="true">
      <Trigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource HoverOn}" />
      </Trigger.EnterActions>
      <Trigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource HoverOff}" />
      </Trigger.ExitActions>
    </Trigger>
    <Trigger Property="IsEnabled"
             Value="false">
      <Setter Property="Fill"
              Value="{DynamicResource DisabledBackgroundBrush}"
              TargetName="Background" />
      <Setter Property="Stroke"
              Value="{DynamicResource DisabledBorderBrush}"
              TargetName="Background" />
      <Setter Property="Foreground"
              Value="{DynamicResource DisabledForegroundBrush}" />
      <Setter Property="Opacity"
              TargetName="bulletDecorator"
              Value="0.5" />
    </Trigger>
  </ControlTemplate.Triggers>
</ControlTemplate>
share|improve this question
    
Hey can you view the source xaml for you ExpressionDark theme for the checkbox? If you could you post that segment in your question? –  Kazuo Jun 12 '13 at 16:14
    
Please find the Checkbox Related XAML code in Theme ThemeExpressionDark.xaml edited in Question. –  Hussain Jun 13 '13 at 11:03

2 Answers 2

If the theme you are referring to is the same one I have used in the past then have a look below at the control template for the CheckBox. Pay particular attention to the SolidColorBrush inside the following tags.

<Border.BorderBrush>
    <SolidColorBrush Color="{DynamicResource BlackColor}" />
</Border.BorderBrush>

That brush in your theme is likely set to a color which is blending in with your background. Because that would make the border invisible the checkbox will also appear to be invisible. Try setting that border brush to a different color. I have set mine as BlackColor which matches all the other borders in the theme.

<ControlTemplate x:Key="NuclearCheckBox"  TargetType="{x:Type CheckBox}">
    <BulletDecorator Background="Transparent" x:Name="bulletDecorator">
        <BulletDecorator.Bullet>
            <Grid Width="13" Height="13">
                <Border x:Name="Border" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0,0,0,0" Background="{DynamicResource LightBrush}">
                    <Border.BorderBrush>
                        <SolidColorBrush Color="{DynamicResource BlueBorderColor}" />
                    </Border.BorderBrush>
                    <Rectangle Visibility="Hidden" Fill="{DynamicResource GlyphBrush}" x:Name="rectangle" Margin="1,1,1,1" />
                </Border>
                <Path Stretch="Fill" Stroke="{DynamicResource GlyphBrush}" StrokeThickness="2" x:Name="path" Width="Auto" Data="M1.0924787,5.372821 L3.1785986,10.519821 10.528543,2.5198207" Margin="1.577,0.134,-0.013,2.866" />
            </Grid>
        </BulletDecorator.Bullet>
        <ContentPresenter RecognizesAccessKey="True" Margin="5,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" />
    </BulletDecorator>
    <ControlTemplate.Triggers>
    </ControlTemplate.Triggers>
</ControlTemplate>
share|improve this answer
    
Thanks your Idea was helpful for me. Done changes in ListViewItem Style as I mentioned in the answer. –  Hussain Jun 16 '13 at 6:42
up vote 0 down vote accepted

I had solved the overlapping of checboxes under ListViewItem by deleting following XAML code of theme ThemeExpressionDark. XAML under Border in ListViewItem Style:

<Style TargetType="{x:Type ListViewItem}">
    <Border SnapsToDevicePixels="true" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" x:Name="border">

     <Grid Margin="2,0,2,0">
         <Rectangle x:Name="Background" IsHitTestVisible="False" Opacity="0.25" Fill="{StaticResource NormalBrush}" RadiusX="1" RadiusY="1"/>
         <Rectangle x:Name="HoverRectangle" IsHitTestVisible="False" Opacity="0" Fill="{StaticResource NormalBrush}" RadiusX="1" RadiusY="1"/>
         <Rectangle x:Name="SelectedRectangle" IsHitTestVisible="False" Opacity="0" Fill="{StaticResource SelectedBackgroundBrush}" RadiusX="1" RadiusY="1"/>

         <GridViewRowPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="0,2,0,2" VerticalAlignment="Stretch" />
     </Grid>    
</Style>

And applied some basic styles instead of above XAML.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.