feat: add option to make it selectable.

This commit is contained in:
rabbitism
2024-02-18 18:21:49 +08:00
parent a4c214cfc2
commit 728185bdf7
3 changed files with 33 additions and 2 deletions

View File

@@ -19,5 +19,13 @@
FontSize="30"
StringFormat="yyyy-MM-dd"
Value="{Binding DateValue}" />
<TextBlock Text="Selectable: "></TextBlock>
<u:Int32Displayer Value="{Binding Value}" IsSelectable="True" />
<u:DoubleDisplayer StringFormat="N2" Value="{Binding DoubleValue}" IsSelectable="True" />
<u:DateDisplay
FontSize="30"
StringFormat="yyyy-MM-dd"
IsSelectable="True"
Value="{Binding DateValue}" />
</StackPanel>
</UserControl>

View File

@@ -16,9 +16,23 @@
FontWeight="{TemplateBinding FontWeight}"
FontStyle="{TemplateBinding FontSize}"
FontStretch="{TemplateBinding FontStretch}"
Text="{TemplateBinding InternalText,
Mode=OneWay}" />
Text="{TemplateBinding InternalText, Mode=OneWay}" />
</ControlTemplate>
</Setter>
<Style Selector="^[IsSelectable=True]">
<Setter Property="Template">
<ControlTemplate TargetType="u:NumberDisplayerBase">
<SelectableTextBlock
FontSize="{TemplateBinding FontSize}"
Foreground="{TemplateBinding Foreground}"
FontFamily="{TemplateBinding FontFamily}"
Background="{TemplateBinding Background}"
FontWeight="{TemplateBinding FontWeight}"
FontStyle="{TemplateBinding FontSize}"
FontStretch="{TemplateBinding FontStretch}"
Text="{TemplateBinding InternalText, Mode=OneWay}" />
</ControlTemplate>
</Setter>
</Style>
</ControlTheme>
</ResourceDictionary>

View File

@@ -35,6 +35,15 @@ public abstract class NumberDisplayerBase : TemplatedControl
get => GetValue(StringFormatProperty);
set => SetValue(StringFormatProperty, value);
}
public static readonly StyledProperty<bool> IsSelectableProperty = AvaloniaProperty.Register<NumberDisplayerBase, bool>(
nameof(IsSelectable));
public bool IsSelectable
{
get => GetValue(IsSelectableProperty);
set => SetValue(IsSelectableProperty, value);
}
}
public abstract class NumberDisplayer<T>: NumberDisplayerBase