2010-12-30 12 views
0

habe ich folgenden Stil für eine TreeViewItem definiert:WPF TreeViewItem nicht von Code erweitert hinter

<Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}"> 
                <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" /> 
                <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" /> 
                <Setter Property="AllowDrop" Value="True" />              
                <Setter Property="Background" Value="Transparent"/> 
                <Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
                <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
                <Setter Property="Padding" Value="1,0,0,0"/> 
                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
                <Setter Property="FocusVisualStyle" Value="{StaticResource TreeViewItemFocusVisual}"/> 
                <Setter Property="Template"> 
                 <Setter.Value> 
                  <ControlTemplate TargetType="{x:Type TreeViewItem}"> 
                   <Grid> 
                    <Grid.ColumnDefinitions> 
                     <ColumnDefinition MinWidth="19" Width="Auto"/> 
                     <ColumnDefinition Width="Auto"/> 
                     <ColumnDefinition Width="*"/> 
                    </Grid.ColumnDefinitions> 
                    <Grid.RowDefinitions> 
                     <RowDefinition Height="Auto"/> 
                     <RowDefinition/> 
                    </Grid.RowDefinitions> 

                    <!-- Connecting Lines --> 
                    <Rectangle x:Name="HorLn" Height="1" Stroke="#8888" Margin="10,0,0,0" SnapsToDevicePixels="true"/> 
                    <Rectangle x:Name="VerLn" Width="1" Stroke="#8888" Grid.RowSpan="2" SnapsToDevicePixels="true"/> 
                    <ToggleButton x:Name="Expander" 
                        Style="{StaticResource ExpandCollapseToggleStyle}" 
                        IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" 
                        ClickMode="Press"/> 
                    <Border Name="Bd" 
                      Grid.Column="1" 
                      Background="{TemplateBinding Background}" 
                      BorderBrush="{TemplateBinding BorderBrush}" 
                      BorderThickness="{TemplateBinding BorderThickness}" 
                      Padding="{TemplateBinding Padding}"> 
                     <ContentPresenter x:Name="PART_Header" 
                        ContentSource="Header" 
                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/> 
                    </Border> 
                    <ItemsPresenter x:Name="ItemsHost" 
                      Grid.Row="1" 
                      Grid.Column="1" 
                      Grid.ColumnSpan="2"/> 
                   </Grid> 
                   <ControlTemplate.Triggers> 

                    <!-- This trigger changes the connecting lines if the item is the last in the list --> 
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LineConverter}}" Value="true"> 
                     <Setter TargetName="VerLn" 
                     Property="Height" 
                     Value="6"/> 
                     <Setter TargetName="VerLn" 
                     Property="VerticalAlignment" 
                     Value="Top"/> 
                    </DataTrigger> 
                    <Trigger Property="IsExpanded" 
                    Value="false"> 
                     <Setter TargetName="ItemsHost" 
                     Property="Visibility" 
                     Value="Collapsed"/> 
                    </Trigger> 
                    <Trigger Property="HasItems" 
                    Value="false"> 
                     <Setter TargetName="Expander" 
                     Property="Visibility" 
                     Value="Hidden"/> 
                    </Trigger> 
                    <MultiTrigger> 
                     <MultiTrigger.Conditions> 
                      <Condition Property="HasHeader" 
                       Value="false"/> 
                      <Condition Property="Width" 
                       Value="Auto"/> 
                     </MultiTrigger.Conditions> 
                     <Setter TargetName="PART_Header" 
                     Property="MinWidth" 
                     Value="75"/> 
                    </MultiTrigger> 
                    <MultiTrigger> 
                     <MultiTrigger.Conditions> 
                      <Condition Property="HasHeader" 
                       Value="false"/> 
                      <Condition Property="Height" 
                       Value="Auto"/> 
                     </MultiTrigger.Conditions> 
                     <Setter TargetName="PART_Header" 
                     Property="MinHeight" 
                     Value="19"/> 
                    </MultiTrigger> 
                    <Trigger Property="IsSelected" 
                    Value="true"> 
                     <Setter TargetName="Bd" 
                     Property="Background" 
                     Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
                     <Setter Property="Foreground" 
                     Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> 
                    </Trigger> 
                    <MultiTrigger> 
                     <MultiTrigger.Conditions> 
                      <Condition Property="IsSelected" 
                       Value="true"/> 
                      <Condition Property="IsSelectionActive" 
                       Value="false"/> 
                     </MultiTrigger.Conditions> 
                     <Setter TargetName="Bd" 
                     Property="Background" 
                     Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
                     <Setter Property="Foreground" 
                     Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
                    </MultiTrigger> 
                    <Trigger Property="IsEnabled" 
                    Value="false"> 
                     <Setter Property="Foreground" 
                     Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
                    </Trigger> 
                   </ControlTemplate.Triggers> 
                  </ControlTemplate> 
                 </Setter.Value> 
                </Setter> 
               </Style> 

ich nicht TreeViewItem zu erweitern bekommen können, wenn IsExpanded Eigenschaft des Modells hinter true in Code festgelegt ist. Die Eigenschaft "ModelExpanded" ändert sich jedoch, wenn TreeViewItem von der Benutzeroberfläche aus erweitert wird. Was vermisse ich?

Danke.

Antwort

0

Ich habe ähnlichen Code arbeiten, die Einstellung, die Sie oben sehen, sieht gut aus.

<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 

Haben heben Sie ein PropertyChanged Ereignis, sobald Sie die IsExpanded Eigenschaft in Ihrem Modell aktualisiert?

+0

Ja, ich hebe das PropertyChanged-Ereignis auf, aber das Ereignis wird nicht behandelt, daher ist mein Modell nicht richtig. –

+0

Ich habe auch ähnliche Code funktioniert auch. Poste dein Modell und/oder etwas mehr Code. Es ist schwer zu sagen, ob Sie View-Modell haben oder Sie behandeln alles im Code dahinter. – Zamboni

+0

Jungs, ich war auf Differenz Instanz des Modells zugreifen. Modell und XAML ist in Ordnung. Vielen Dank. –

Verwandte Themen