feat: add compile binding.

This commit is contained in:
rabbitism
2024-07-22 15:59:54 +08:00
parent 34ca98eede
commit eb797a9440
8 changed files with 30 additions and 19 deletions

View File

@@ -12,7 +12,6 @@
<ItemGroup> <ItemGroup>
<TrimmerRootDescriptor Include="Roots.xml" /> <TrimmerRootDescriptor Include="Roots.xml" />
<TrimmerRootAssembly Include="Ursa.Thems.Semi" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -2,7 +2,8 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:contracts="https://irihi.tech/shared" xmlns:contracts="https://irihi.tech/shared"
xmlns:u="https://irihi.tech/ursa"> xmlns:u="https://irihi.tech/ursa"
x:CompileBindings="True">
<!-- Add Resources Here --> <!-- Add Resources Here -->
<ControlTheme x:Key="{x:Type u:DateRangePicker}" TargetType="u:DateRangePicker"> <ControlTheme x:Key="{x:Type u:DateRangePicker}" TargetType="u:DateRangePicker">
<Setter Property="Background" Value="{DynamicResource TextBoxDefaultBackground}" /> <Setter Property="Background" Value="{DynamicResource TextBoxDefaultBackground}" />
@@ -68,9 +69,9 @@
Name="{x:Static u:DateRangePicker.PART_Button}" Name="{x:Static u:DateRangePicker.PART_Button}"
Grid.Column="3" Grid.Column="3"
Padding="8,0" Padding="8,0"
IsVisible="{Binding !#ClearButton.IsVisible}"
Content="{DynamicResource CalendarDatePickerIconGlyph}" Content="{DynamicResource CalendarDatePickerIconGlyph}"
Focusable="False" Focusable="False"
IsVisible="{Binding !#ClearButton.IsVisible}"
Theme="{DynamicResource InnerIconButton}" /> Theme="{DynamicResource InnerIconButton}" />
</Grid> </Grid>
<Popup <Popup
@@ -120,18 +121,18 @@
Grid.Column="0" Grid.Column="0"
Margin="8" Margin="8"
BorderThickness="0" BorderThickness="0"
FontSize="{DynamicResource DefaultFontSize}"
CornerRadius="{Binding $parent[Border].CornerRadius}" CornerRadius="{Binding $parent[Border].CornerRadius}"
FirstDayOfWeek="{TemplateBinding FirstDayOfWeek}" FirstDayOfWeek="{TemplateBinding FirstDayOfWeek}"
FontSize="{DynamicResource DefaultFontSize}"
IsTodayHighlighted="{TemplateBinding IsTodayHighlighted}" /> IsTodayHighlighted="{TemplateBinding IsTodayHighlighted}" />
<u:CalendarView <u:CalendarView
Name="{x:Static u:DateRangePicker.PART_EndCalendar}" Name="{x:Static u:DateRangePicker.PART_EndCalendar}"
Grid.Column="1" Grid.Column="1"
Margin="8" Margin="8"
BorderThickness="0" BorderThickness="0"
FontSize="{DynamicResource DefaultFontSize}"
CornerRadius="{Binding $parent[Border].CornerRadius}" CornerRadius="{Binding $parent[Border].CornerRadius}"
FirstDayOfWeek="{TemplateBinding FirstDayOfWeek}" FirstDayOfWeek="{TemplateBinding FirstDayOfWeek}"
FontSize="{DynamicResource DefaultFontSize}"
IsTodayHighlighted="{TemplateBinding IsTodayHighlighted}" /> IsTodayHighlighted="{TemplateBinding IsTodayHighlighted}" />
</Grid> </Grid>
</DockPanel> </DockPanel>
@@ -144,7 +145,7 @@
<Style Selector="^.clearButton, ^.ClearButton"> <Style Selector="^.clearButton, ^.ClearButton">
<Style Selector="^:not(:empty):pointerover /template/ Button#ClearButton"> <Style Selector="^:not(:empty):pointerover /template/ Button#ClearButton">
<Setter Property="IsVisible" Value="{Binding $parent[u:DatePicker].start, Converter={x:Static ObjectConverters.IsNotNull}}" /> <Setter Property="IsVisible" Value="True" />
</Style> </Style>
</Style> </Style>

View File

@@ -30,7 +30,6 @@
<Setter Property="TextElement.FontFamily" Value="{TemplateBinding FontFamily}" /> <Setter Property="TextElement.FontFamily" Value="{TemplateBinding FontFamily}" />
<Setter Property="TextElement.FontWeight" Value="{TemplateBinding FontWeight}" /> <Setter Property="TextElement.FontWeight" Value="{TemplateBinding FontWeight}" />
<Setter Property="TextElement.FontSize" Value="{TemplateBinding FontSize}" /> <Setter Property="TextElement.FontSize" Value="{TemplateBinding FontSize}" />
<Setter Property="ContentPresenter.IsVisible" Value="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}" />
<Setter Property="ContentPresenter.Margin" Value="{DynamicResource ThicknessDividerTextMargin}" /> <Setter Property="ContentPresenter.Margin" Value="{DynamicResource ThicknessDividerTextMargin}" />
<Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="VerticalAlignment" Value="Center" />
</ControlTheme> </ControlTheme>
@@ -48,7 +47,10 @@
Height="{TemplateBinding Height}" Height="{TemplateBinding Height}"
ColumnDefinitions="Auto,Auto,*"> ColumnDefinitions="Auto,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" /> <Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter Grid.Column="1" Theme="{StaticResource DividerContentPresenter}" /> <ContentPresenter
Grid.Column="1"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"
Theme="{StaticResource DividerContentPresenter}" />
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" /> <Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid> </Grid>
</ControlTemplate> </ControlTemplate>
@@ -62,7 +64,10 @@
Height="{TemplateBinding Height}" Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,Auto"> ColumnDefinitions="*,Auto,Auto">
<Rectangle Theme="{StaticResource DividerLeftLine}" /> <Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter Grid.Column="1" Theme="{StaticResource DividerContentPresenter}" /> <ContentPresenter
Grid.Column="1"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"
Theme="{StaticResource DividerContentPresenter}" />
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" /> <Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid> </Grid>
</ControlTemplate> </ControlTemplate>
@@ -76,7 +81,10 @@
Height="{TemplateBinding Height}" Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,*"> ColumnDefinitions="*,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" /> <Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter Grid.Column="1" Theme="{StaticResource DividerContentPresenter}" /> <ContentPresenter
Grid.Column="1"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"
Theme="{StaticResource DividerContentPresenter}" />
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" /> <Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid> </Grid>
</ControlTemplate> </ControlTemplate>
@@ -90,7 +98,10 @@
Height="{TemplateBinding Height}" Height="{TemplateBinding Height}"
ColumnDefinitions="*,Auto,*"> ColumnDefinitions="*,Auto,*">
<Rectangle Theme="{StaticResource DividerLeftLine}" /> <Rectangle Theme="{StaticResource DividerLeftLine}" />
<ContentPresenter Grid.Column="1" Theme="{StaticResource DividerContentPresenter}" /> <ContentPresenter
Grid.Column="1"
IsVisible="{Binding Content, RelativeSource={RelativeSource TemplatedParent}, Converter={x:Static ObjectConverters.IsNotNull}}"
Theme="{StaticResource DividerContentPresenter}" />
<Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" /> <Rectangle Grid.Column="2" Theme="{StaticResource DividerRightLine}" />
</Grid> </Grid>
</ControlTemplate> </ControlTemplate>

View File

@@ -248,7 +248,7 @@
<Style Selector="^ /template/ Panel#PART_TitleArea"> <Style Selector="^ /template/ Panel#PART_TitleArea">
<Setter Property="ContextFlyout"> <Setter Property="ContextFlyout">
<MenuFlyout> <MenuFlyout>
<MenuItem Command="{Binding $parent[u:CustomDialogControl].CloseDialog}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}"> <MenuItem Command="{Binding $parent[u:CustomDialogControl].Close}" Header="{DynamicResource STRING_MENU_DIALOG_CLOSE}">
<MenuItem.Icon> <MenuItem.Icon>
<PathIcon <PathIcon
Width="12" Width="12"

View File

@@ -18,7 +18,7 @@
RowDefinitions="Auto,Auto,Auto"> RowDefinitions="Auto,Auto,Auto">
<Grid.Styles> <Grid.Styles>
<Style Selector="TickBar"> <Style Selector="TickBar">
<Setter Property="ReservedSpace" Value="{Binding #PART_Track.LowerThumb.Bounds}" /> <Setter Property="ReservedSpace" Value="{ReflectionBinding #PART_Track.LowerThumb.Bounds}" />
</Style> </Style>
</Grid.Styles> </Grid.Styles>
<TickBar <TickBar
@@ -50,7 +50,7 @@
TickFrequency="{TemplateBinding u:RangeSlider.TickFrequency}" TickFrequency="{TemplateBinding u:RangeSlider.TickFrequency}"
Ticks="{TemplateBinding Ticks}" /> Ticks="{TemplateBinding Ticks}" />
<u:RangeTrack <u:RangeTrack
Name="{x:Static u:RangeSlider.PART_Track}" Name="PART_Track"
Grid.Row="1" Grid.Row="1"
Cursor="Hand" Cursor="Hand"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
@@ -110,7 +110,7 @@
ColumnDefinitions="Auto,Auto,Auto"> ColumnDefinitions="Auto,Auto,Auto">
<Grid.Styles> <Grid.Styles>
<Style Selector="TickBar"> <Style Selector="TickBar">
<Setter Property="ReservedSpace" Value="{Binding #PART_Track.LowerThumb.Bounds}" /> <Setter Property="ReservedSpace" Value="{ReflectionBinding #PART_Track.LowerThumb.Bounds}" />
</Style> </Style>
</Grid.Styles> </Grid.Styles>
<TickBar <TickBar
@@ -142,7 +142,7 @@
TickFrequency="{TemplateBinding u:RangeSlider.TickFrequency}" TickFrequency="{TemplateBinding u:RangeSlider.TickFrequency}"
Ticks="{TemplateBinding Ticks}" /> Ticks="{TemplateBinding Ticks}" />
<u:RangeTrack <u:RangeTrack
Name="{x:Static u:RangeSlider.PART_Track}" Name="PART_Track"
Cursor="Hand" Cursor="Hand"
Grid.Column="1" Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"

View File

@@ -10,7 +10,7 @@
<Setter Property="VerticalAlignment" Value="Top" /> <Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="ItemTemplate"> <Setter Property="ItemTemplate">
<DataTemplate> <DataTemplate>
<u:ClosableTag Command="{Binding $parent[u:TagInput].Close}" Content="{Binding}" /> <u:ClosableTag Command="{Binding $parent[u:TagInput].Close}" Content="{ReflectionBinding}" />
</DataTemplate> </DataTemplate>
</Setter> </Setter>
<Setter Property="Template"> <Setter Property="Template">

View File

@@ -39,7 +39,7 @@ public class ControlClassesInput: TemplatedControl
internal static readonly DirectProperty<ControlClassesInput, ObservableCollection<string>> TargetClassesProperty = AvaloniaProperty.RegisterDirect<ControlClassesInput, ObservableCollection<string>>( internal static readonly DirectProperty<ControlClassesInput, ObservableCollection<string>> TargetClassesProperty = AvaloniaProperty.RegisterDirect<ControlClassesInput, ObservableCollection<string>>(
nameof(TargetClasses), o => o.TargetClasses, (o, v) => o.TargetClasses = v); nameof(TargetClasses), o => o.TargetClasses, (o, v) => o.TargetClasses = v);
internal ObservableCollection<string> TargetClasses public ObservableCollection<string> TargetClasses
{ {
get => _targetClasses; get => _targetClasses;
set => SetAndRaise(TargetClassesProperty, ref _targetClasses, value); set => SetAndRaise(TargetClassesProperty, ref _targetClasses, value);

View File

@@ -124,7 +124,7 @@ public class NavMenuItem: HeaderedItemsControl
internal static readonly DirectProperty<NavMenuItem, int> LevelProperty = AvaloniaProperty.RegisterDirect<NavMenuItem, int>( internal static readonly DirectProperty<NavMenuItem, int> LevelProperty = AvaloniaProperty.RegisterDirect<NavMenuItem, int>(
nameof(Level), o => o.Level, (o, v) => o.Level = v); nameof(Level), o => o.Level, (o, v) => o.Level = v);
private int _level; private int _level;
internal int Level public int Level
{ {
get => _level; get => _level;
set => SetAndRaise(LevelProperty, ref _level, value); set => SetAndRaise(LevelProperty, ref _level, value);