如何使用 "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,将 属性 HorizontalContentAlignment 设置为 "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>
我想在 TreeViewItem 中有两个控件,Textblock 左对齐,togglebutton/content 控件右对齐。要使用标准 WPF 控件执行此操作,需要覆盖标准 ItemContainerStyle 并删除第二列 and/or,将 属性 HorizontalContentAlignment 设置为 "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>