|
<TreeView:SfTreeView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding Level, Converter={StaticResource CheckBoxWidthConverter}}"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<SfButtons:SfCheckBox
x:Name="CheckBox" Margin="10, 0, 0, 0"
IsVisible="{Binding Level, Converter={StaticResource CheckBoxVisibilityConverter}}"
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
<Label Text="{Binding Content.FileName}" Grid.Column="1"/>
</Grid>
</DataTemplate>
</TreeView:SfTreeView.ItemTemplate> |
|
public class CheckBoxVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value == 0 ? false : true;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class CheckBoxWidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)value == 0 ? 0 : 50;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
} |
|
<SearchBar x:Name="searchBar"
Placeholder="Search Tree"
HeightRequest="50"/> |
|
private void SearchBar_SearchButtonPressed(object sender, EventArgs e)
{
if (SearchBar.Text == "")
{
TreeView.ItemsSource = viewModel.Folders;
return;
}
var searchText = SearchBar.Text;
foreach (var node in viewModel.Folders)
{
if (node.FileName.ToLower().Contains(searchText.ToLower()))
{
filterViewModel.Clear();
filterViewModel.Add(node);
}
else
{
foreach (var child in node.Files)
{
if (child.FileName.ToLower().Contains(searchText.ToLower()))
{
filterViewModel.Clear();
filterViewModel.Add(child);
}
}
}
}
TreeView.ItemsSource = filterViewModel;
}
|