如何使用 "Material Design In XAML Toolkit" 控件拉伸 TreeViewItem

How to stretch TreeViewItem using "Material Design In XAML Toolkit" controls

我想在 TreeViewItem 中有两个控件,Textblock 左对齐,togglebutton/content 控件右对齐。要使用标准 WPF 控件执行此操作,需要覆盖标准 ItemContainerStyle 并删除第二列 and/or,将 属性 Horizo​​ntalContentAlignment 设置为 "Stretch"。但是使用 Material Desing In XAML Toolkit controls 它不起作用。

我的代码:

    <DataTemplate x:Key="DTBooleanOption" >
        <ToggleButton DockPanel.Dock="Right"
          Style="{StaticResource MaterialDesignSwitchDarkToggleButton}"
          ToolTip="MaterialDesignSwitchDarkToggleButton"
          IsChecked="{Binding Value}" />
    </DataTemplate>
    <DataTemplate DataType="{x:Type models:Option}">
        <DockPanel HorizontalAlignment="Stretch" >
            <TextBlock Text="{Binding Name}" DockPanel.Dock="Left" HorizontalAlignment="Left" />
            <ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource OptionDataTemplateSelector}" DockPanel.Dock="Right" HorizontalContentAlignment="Stretch" HorizontalAlignment="Right"/>
        </DockPanel>
    </DataTemplate>
    <HierarchicalDataTemplate DataType="{x:Type models:OptionGroup}" ItemsSource="{Binding Items}" >
        <TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Stretch"/>
    </HierarchicalDataTemplate>


<StackPanel>
    <TreeView ItemsSource="{Binding Settings.SettingGroups}"  >
        <TreeView.ItemContainerStyle>
            <Style TargetType="TreeViewItem" BasedOn="{StaticResource MaterialDesignTreeViewItem}">
                <Setter Property="VerticalContentAlignment" Value="Stretch" />
                <Setter Property="VerticalAlignment" Value="Stretch"/>
                <!--<Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="TreeViewItem"  >
                            <StackPanel>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto"
                            MinWidth="19" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                </Grid>
                            </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>--> 
            </Style>
        </TreeView.ItemContainerStyle>
    </TreeView>
</StackPanel>

如何拉伸它以将一个控件左对齐,一个控件右对齐?

1) 你错了:

<Setter Property="VerticalContentAlignment" Value="Stretch" />

应该是:

<Setter Property="HorizontalContentAlignment" Value="Stretch" />

2) 您的停靠面板应该类似于:

<DockPanel HorizontalAlignment="Stretch" LastChildFill="True" >
    <ToggleButton DockPanel.Dock="Right"
      Style="{StaticResource MaterialDesignSwitchDarkToggleButton}"
      ToolTip="MaterialDesignSwitchDarkToggleButton"
       />
    <TextBlock Text="{Binding Name}" HorizontalAlignment="Left" />
</DockPanel>