在設計TreeView編輯狀況下,希望 TreeItemName 后续的编辑框 复选框 可以整齐排列。
参考微软提供的TREELISTVIEW,发现它是根据层级关系调整Margin 属性。
我这边按照同样的方式,实现WIDTH的宽度的递减,就可实现需要的效果。
<HierarchicalDataTemplate x:Key="TreeNodes" ItemsSource="{Binding Path=Childs,Mode=TwoWay}" > <Grid DataContext="{Binding}" Width="{Binding Level, Converter={StaticResource LevelToWidthConverter}}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="50" /> <ColumnDefinition Width="50" /> <ColumnDefinition Width="50" /> <ColumnDefinition Width="50" /> <ColumnDefinition Width="50" /> </Grid.ColumnDefinitions> <TextBlock Text="{Binding Name}" /> <CheckBox Grid.Column="1" IsChecked="{Binding IsCheck}" IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" > <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <i:InvokeCommandAction Command="{Binding Path=DataContext.NodeChangeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" CommandParameter="{Binding Id}"/> </i:EventTrigger> </i:Interaction.Triggers> </CheckBox> <CheckBox Grid.Column="2" IsChecked="{Binding HasAdd,Mode=TwoWay}" IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" > </CheckBox> <CheckBox Grid.Column="3" IsChecked="{Binding HasEdit,Mode=TwoWay}" IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" > </CheckBox> <CheckBox Grid.Column="4" IsChecked="{Binding HasEditDetail,Mode=TwoWay}" IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" > </CheckBox> <CheckBox Grid.Column="5" IsChecked="{Binding HasDelete,Mode=TwoWay}" IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}" > </CheckBox> </Grid> </HierarchicalDataTemplate>