<Page.Resources> <DataTemplate x:Key="FolderTemplate" x:DataType="data:Son"> <muxcontrols:TreeViewItem AutomationProperties.Name="{Binding title}" ItemsSource="{Binding sons}" Width="400" IsExpanded="False"> <StackPanel Orientation="Horizontal"> <Image Width="28" Source="{Binding list_icon}"/> <TextBlock Margin="0,0,10,0"/> <TextBlock Text="{Binding title}" FontSize="28"/> </StackPanel> </muxcontrols:TreeViewItem> </DataTemplate> <DataTemplate x:Key="FolderTemplate1" x:DataType="data:Son"> <muxcontrols:TreeViewItem AutomationProperties.Name="{Binding title}" ItemsSource="{Binding sons}" Width="360" IsExpanded="False"> <StackPanel Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" /> <TextBlock Text="{Binding title}" FontSize="28" /> </StackPanel> </muxcontrols:TreeViewItem> </DataTemplate> <DataTemplate x:Key="FileTemplate" x:DataType="data:Son"> <muxcontrols:TreeViewItem AutomationProperties.Name="{Binding title}" Width="320" IsExpanded="False"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="80"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <StackPanel Orientation="Horizontal" Width="320" Grid.Column="1"> <TextBlock Margin="0,0,10,0" /> <TextBlock Text="{Binding title}" FontSize="24" /> </StackPanel> <Button Command="{Binding SwitchThemeCommand }" CommandParameter="{Binding}" HorizontalAlignment="Right" Grid.Column="0" Background="Transparent" CornerRadius="4" Content="{x:Bind BtnText,Mode=TwoWay}" /> </Grid> </muxcontrols:TreeViewItem> </DataTemplate> <local:ExplorerItemTemplateSelector x:Key="ExplorerItemTemplateSelector" FolderTemplate="{StaticResource FolderTemplate}" FileTemplate="{StaticResource FileTemplate}" FolderTemplate1="{StaticResource FolderTemplate1}" /> </Page.Resources>
public class ExplorerItemTemplateSelector : DataTemplateSelector { public DataTemplate FolderTemplate { get; set; } public DataTemplate FolderTemplate1 { get; set; } public DataTemplate FileTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item) { var explorerItem = (Son)item; //var explorerItem = explorer.Content as Son; if (!string.IsNullOrEmpty(explorerItem.list_icon)) { return FolderTemplate; } else if (string.IsNullOrEmpty(explorerItem.list_icon) && explorerItem.sons != null && explorerItem.sons.Count > 0) { return FolderTemplate1; } else { return FileTemplate; } // return FolderTemplate; // return explorerItem.sons!=null ? FolderTemplate : FileTemplate; } }
<Grid> <muxcontrols:TreeView Name="TreeView1" Margin="0,12,0,0" Width="800" HorizontalAlignment="Center" VerticalAlignment="Top" SelectionMode="None" ItemTemplateSelector="{StaticResource ExplorerItemTemplateSelector}" > </muxcontrols:TreeView> </Grid>
private ICommand _switchThemeCommand; public ICommand SwitchThemeCommand { get { if (_switchThemeCommand == null) { _switchThemeCommand = new RelayCommand<Son>( (param) => { var par = param as Son; IsAdded = !IsAdded; if (isAdded == true) { } else { } BtnText = "已添加o"; // ElementTheme = param; // await ThemeSelectorService.SetThemeAsync(param); }); } return _switchThemeCommand; } }