0

I added a CheckBox into default TabControl template.
TabControl has one TabItem, it's content is a Grid with two ColumDefinitions.
I want to hide one of the columns when TabControl's CheckBox IsChecked.
Below is what I want to do/tried to do.

<TabControl>
    <TabControl.Resources>
        <Style TargetType="{x:Type TabControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabControl}">
                        <Grid x:Name="templateRoot">
                            <TabPanel x:Name="headerPanel"/>
                            <CheckBox x:Name="MyCheckbox"/>
                            <Border x:Name="contentPanel"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
    <TabItem>
        <ListBox>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition Width="80">
                                <ColumnDefinition.Style>
                                    <Style TargetType="ColumnDefinition">
                                        <Setter Property="Width" Value="80"/>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding MyCheckbox.IsChecked, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type CheckBox}}}" Value="False">
                                                <Setter Property="Width" Value="0"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </ColumnDefinition.Style>
                            </ColumnDefinition>
                        </Grid.ColumnDefinitions>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </TabItem>
</TabControl>
Gytis S
  • 159
  • 1
  • 8
  • Your binding is incorret. You should use FindAncestor, something like here http://stackoverflow.com/questions/84278/how-do-i-use-wpf-bindings-with-relativesource – netaholic Sep 24 '15 at 09:43
  • Your ControlTemplate template seems incorrect to me as well – netaholic Sep 24 '15 at 09:52

0 Answers0