2010-10-28 5 views
0

Bonjour,TreeViewItem Bouton de commande de liaison

Première question ici et juste apprendre WPF, donc s'il vous plaît soyez doux ...

Je suis en train de mettre sur pied un TreeView dont les éléments feu Commandes. Je suis sûr qu'il y a beaucoup de manières d'accomplir ceci, mais mon approche a été de créer un style pour le TreeViewItem avec un ControlTemplate qui incorpore un RadioButton pour sa fonctionnalité de commande.

. . . 
<ToggleButton x:Name="Expander" 
    Style="{StaticResource ExpandCollapseToggleStyle}" Grid.Column="0" Grid.Row="0" 
    IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" 
    ClickMode="Press"/> 
    <RadioButton Style="{StaticResource TreeElementStyle}" 
    Grid.Row="0" Grid.Column="1" Command="{TemplateBinding ???}"> 
    <ContentPresenter x:Name="PART_Header" ContentSource="Header"/> 
    </RadioButton> 
    <ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"/> 
</Grid> 
. . . 

Peu importe, je arbre regarder visuellement bien mais ne peut pas comprendre comment lier mon commandement au RadioButton, et je suis perdu incorporé dans un bourbier de confusion de modèle.

. . . 
<TreeView> 
    <TreeViewItem Header="Enterprise"> 
    <TreeViewItem Header="General Settings" 
     Command="{Binding Path=GeneralSettingsCommand}"/> 
. . . 

Je fourniraient plus de code, mais je suppose à ce stade, les réponses seront plus « En savoir plus sur bla premier Mec, tu es bien sur la bonne voie. », Ou « un bouton le long des lignes de, est complètement inutile «ou « vous devez utiliser un ItemTemplate au lieu » ou ... » ou « juste abandonner déjà »;)

+0

N'a pas '{}' TemplateBinding TreeViewItem.Command travail? – decyclone

Répondre

0

Merci Meleak;. bonne information

Cependant, j'ai trouvé un très simple solution - pour mes fins de toute façon

L'astuce consiste à fournir le bouton comme t Il TreeViewItem.Header plutôt que de l'incorporer dans ControlTemplate de TreeViewItem.

Si je fournis le bouton en tant que TreeViewItem.Header, je peux facilement définir la commande et le styler de manière appropriée.

est par exemple ici:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Page.Resources> 
    <Style TargetType="{x:Type RadioButton}"> 
     <Setter Property="GroupName" Value="TreeGroup"/> 
     <Setter Property="Focusable" Value="False"/> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type RadioButton}"> 
      <Grid > 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition/> 
       </Grid.ColumnDefinitions> 
       <!-- beginnings of a folder icon --> 
       <Border Background="Black" VerticalAlignment="Center" Width="12" Height="10" CornerRadius="2"> 
       <Border Background="DarkGoldenrod" Margin="1"/> 
       </Border> 
       <Border Grid.Column="1" Margin="4,0,0,0" Padding="1,2,4,2" Name="Selection" Background="Transparent"> 
       <ContentPresenter /> 
       </Border> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
       <Setter TargetName="Selection" Property="Background" Value="DarkBlue"/> 
       <Setter Property="Foreground" Value="White"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </Page.Resources> 
    <Grid> 
    <TreeView Width="220" Focusable="False"> 
     <TreeViewItem IsExpanded="True"> 
     <TreeViewItem.Header> 
      <RadioButton Content="Enterprise"/> 
     </TreeViewItem.Header> 
     <TreeViewItem> 
      <TreeViewItem.Header> 
      <RadioButton Content="Settings" Command="{Binding SettingsCommand}"/> 
      </TreeViewItem.Header> 
     </TreeViewItem> 
     <TreeViewItem> 
      <TreeViewItem.Header> 
      <RadioButton Content="Statistics" Command="{Binding StatisticsCommand}"/> 
      </TreeViewItem.Header> 
     </TreeViewItem> 
     </TreeViewItem> 
    </TreeView> 
    </Grid> 
</Page> 
Questions connexes