feat: add separator.

This commit is contained in:
rabbitism
2024-01-31 11:33:42 +08:00
parent dc3d9feebe
commit 90dd1a3ff4
3 changed files with 16 additions and 5 deletions

View File

@@ -6,7 +6,7 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Ursa.Demo.Pages.ClassInputDemo"> x:Class="Ursa.Demo.Pages.ClassInputDemo">
<StackPanel HorizontalAlignment="Left" Spacing="20"> <StackPanel HorizontalAlignment="Left" Spacing="20">
<u:ControlClassesInput Name="input" /> <u:ControlClassesInput Name="input" Separator=" " />
<Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" /> <Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" />
<Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" /> <Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" />
<Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" /> <Button u:ControlClassesInput.Source="{Binding #input}" Content="Hello Panda" />

View File

@@ -7,7 +7,11 @@
<Setter Property="Width" Value="200" /> <Setter Property="Width" Value="200" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate TargetType="u:ControlClassesInput"> <ControlTemplate TargetType="u:ControlClassesInput">
<u:TagInput HorizontalAlignment="Stretch" AllowDuplicates="False" Tags="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TargetClasses, Mode=TwoWay}" /> <u:TagInput
HorizontalAlignment="Stretch"
AllowDuplicates="False"
Separator="{TemplateBinding Separator}"
Tags="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TargetClasses, Mode=TwoWay}" />
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<!-- <!--

View File

@@ -24,6 +24,15 @@ public class ControlClassesInput: TemplatedControl
set => SetValue(TargetProperty, value); set => SetValue(TargetProperty, value);
} }
public static readonly StyledProperty<string> SeparatorProperty =
TagInput.SeparatorProperty.AddOwner<ControlClassesInput>();
public string Separator
{
get => GetValue(SeparatorProperty);
set => SetValue(SeparatorProperty, value);
}
private ObservableCollection<string> _targetClasses; private ObservableCollection<string> _targetClasses;
@@ -44,7 +53,7 @@ public class ControlClassesInput: TemplatedControl
static ControlClassesInput() static ControlClassesInput()
{ {
TargetClassesProperty.Changed.AddClassHandler<ControlClassesInput, ObservableCollection<string>?>((o,e)=>o.OnClassesChanged(e)); TargetClassesProperty.Changed.AddClassHandler<ControlClassesInput, ObservableCollection<string>>((o,e)=>o.OnClassesChanged(e));
SourceProperty.Changed.AddClassHandler<StyledElement, ControlClassesInput?>(HandleSourceChange); SourceProperty.Changed.AddClassHandler<StyledElement, ControlClassesInput?>(HandleSourceChange);
} }
@@ -67,8 +76,6 @@ public class ControlClassesInput: TemplatedControl
newControl._targets.Remove(oldControl); newControl._targets.Remove(oldControl);
} }
} }
private static readonly char[] _separators = {' ', '\t', '\n', '\r'};
private void OnClassesChanged(AvaloniaPropertyChangedEventArgs<ObservableCollection<string>?> args) private void OnClassesChanged(AvaloniaPropertyChangedEventArgs<ObservableCollection<string>?> args)
{ {