139 lines
7.6 KiB
XML
139 lines
7.6 KiB
XML
<Window
|
|
x:Class="Semi.Avalonia.TreeDataGrid.Demo.MainWindow"
|
|
xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:converters="clr-namespace:Semi.Avalonia.TreeDataGrid.Demo.Converters"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:vm="clr-namespace:Semi.Avalonia.TreeDataGrid.Demo.ViewModels;assembly=Semi.Avalonia.TreeDataGrid.Demo"
|
|
Title="Semi.Avalonia.TreeDataGrid.Demo"
|
|
d:DesignHeight="450"
|
|
d:DesignWidth="800"
|
|
x:DataType="vm:MainViewModel"
|
|
mc:Ignorable="d">
|
|
<Window.Resources>
|
|
<converters:FileIconConverter x:Key="FileIconConverter">
|
|
<PathGeometry x:Key="file">M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z</PathGeometry>
|
|
<PathGeometry x:Key="folderOpen">M6.1,10L4,18V8H21A2,2 0 0,0 19,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H19C19.9,20 20.7,19.4 20.9,18.5L23.2,10H6.1M19,18H6L7.6,12H20.6L19,18Z</PathGeometry>
|
|
<PathGeometry x:Key="folderClosed">M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z</PathGeometry>
|
|
</converters:FileIconConverter>
|
|
</Window.Resources>
|
|
<Grid RowDefinitions="Auto, *">
|
|
<Button
|
|
HorizontalAlignment="Right"
|
|
Click="Button_OnClick"
|
|
Content="Theme" />
|
|
<TabControl Grid.Row="1">
|
|
<TabItem Header="Songs">
|
|
<TreeDataGrid
|
|
AutoDragDropRows="True"
|
|
DataContext="{Binding SongsContext}"
|
|
Source="{Binding Songs}">
|
|
<TreeDataGrid.Resources>
|
|
<DataTemplate x:Key="AlbumCell" DataType="vm:SongViewModel">
|
|
<TextBlock
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Center"
|
|
Background="Transparent"
|
|
Text="{Binding Album}" />
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="AlbumEditCell" DataType="vm:SongViewModel">
|
|
<ComboBox
|
|
VerticalAlignment="Center"
|
|
Classes="Small"
|
|
ItemsSource="{x:Static vm:Song.Albums}"
|
|
SelectedItem="{Binding Album}" />
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="CommentsCell" DataType="vm:SongViewModel">
|
|
<TextBlock VerticalAlignment="Center" Text="{Binding CountOfComment}" />
|
|
</DataTemplate>
|
|
<DataTemplate x:Key="CommentsEditCell" DataType="vm:SongViewModel">
|
|
<NumericUpDown
|
|
Width="100"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
Classes="Small"
|
|
Value="{Binding CountOfComment}" />
|
|
</DataTemplate>
|
|
</TreeDataGrid.Resources>
|
|
<TreeDataGrid.Styles>
|
|
<Style Selector="TreeDataGrid TreeDataGridRow:nth-last-child(2n)">
|
|
<Setter Property="Background" Value="#20808080" />
|
|
</Style>
|
|
</TreeDataGrid.Styles>
|
|
</TreeDataGrid>
|
|
</TabItem>
|
|
<TabItem Header="Files">
|
|
<Grid DataContext="{Binding FilesContext}" RowDefinitions="Auto, *">
|
|
<DockPanel Margin="0,4" DockPanel.Dock="Top">
|
|
<ComboBox
|
|
DockPanel.Dock="Left"
|
|
ItemsSource="{Binding Drives}"
|
|
SelectedItem="{Binding SelectedDrive}" />
|
|
<TextBox
|
|
Margin="4,0,0,0"
|
|
VerticalContentAlignment="Center"
|
|
KeyDown="SelectedPath_KeyDown"
|
|
Text="{Binding SelectedPath, Mode=OneWay}" />
|
|
</DockPanel>
|
|
<TreeDataGrid
|
|
Name="fileViewer"
|
|
Grid.Row="1"
|
|
Source="{Binding Source}">
|
|
<TreeDataGrid.Resources>
|
|
|
|
<!-- Template for Name column cells -->
|
|
<DataTemplate x:Key="FileNameCell" DataType="vm:FileNodeViewModel">
|
|
<StackPanel Orientation="Horizontal">
|
|
<PathIcon
|
|
Width="16"
|
|
Height="16"
|
|
Margin="8,0"
|
|
VerticalAlignment="Center">
|
|
<PathIcon.Data>
|
|
<MultiBinding Converter="{StaticResource FileIconConverter}">
|
|
<Binding Path="IsDirectory" />
|
|
<Binding Path="IsExpanded" />
|
|
</MultiBinding>
|
|
</PathIcon.Data>
|
|
</PathIcon>
|
|
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" />
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
|
|
<!-- Edit template for Name column cells -->
|
|
<DataTemplate x:Key="FileNameEditCell" DataType="vm:FileNodeViewModel">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Image Margin="0,0,4,0" VerticalAlignment="Center">
|
|
<Image.Source>
|
|
<MultiBinding Converter="{StaticResource FileIconConverter}">
|
|
<Binding Path="IsDirectory" />
|
|
<Binding Path="IsExpanded" />
|
|
</MultiBinding>
|
|
</Image.Source>
|
|
</Image>
|
|
<TextBox
|
|
VerticalAlignment="Center"
|
|
Classes="Small"
|
|
Text="{Binding Name}">
|
|
<TextBox.Styles>
|
|
<Style Selector="DataValidationErrors">
|
|
<Setter Property="Theme" Value="{DynamicResource TooltipDataValidationErrors}" />
|
|
</Style>
|
|
</TextBox.Styles>
|
|
</TextBox>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</TreeDataGrid.Resources>
|
|
<TreeDataGrid.Styles>
|
|
<Style Selector="TreeDataGrid TreeDataGridRow:nth-child(2n)">
|
|
<Setter Property="Background" Value="#20808080" />
|
|
</Style>
|
|
</TreeDataGrid.Styles>
|
|
</TreeDataGrid>
|
|
</Grid>
|
|
</TabItem>
|
|
</TabControl>
|
|
</Grid>
|
|
</Window>
|