feat: FixToRB TabItem.

This commit is contained in:
Zhang Dian
2024-06-14 21:34:40 +08:00
parent da25b0b3ff
commit 45e85e2a8b
2 changed files with 53 additions and 244 deletions

View File

@@ -14,6 +14,10 @@
<Style Selector="u|FormItem"> <Style Selector="u|FormItem">
<Setter Property="Width" Value="320" /> <Setter Property="Width" Value="320" />
</Style> </Style>
<Style Selector="TabItem#FixToRBTabItem WrapPanel > Border, u|ElasticWrapPanel > Border">
<Setter Property="Width" Value="{Binding ItemSelfWidth}" />
<Setter Property="Height" Value="{Binding ItemSelfHeight}" />
</Style>
</UserControl.Styles> </UserControl.Styles>
<DockPanel> <DockPanel>
<u:Form DockPanel.Dock="Left" <u:Form DockPanel.Dock="Left"
@@ -182,115 +186,48 @@
<StackPanel> <StackPanel>
<ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}" <ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}"
VerticalScrollBarVisibility="{Binding VerticalVisibility}"> VerticalScrollBarVisibility="{Binding VerticalVisibility}">
<DockPanel> <StackPanel>
<Label Background="{DynamicResource SemiPurple2Color}" <u:Divider HorizontalContentAlignment="Left" Content="WrapPanel" />
Content="WrapPanel"
DockPanel.Dock="Top" />
<WrapPanel ItemHeight="{Binding ItemHeight}" <WrapPanel ItemHeight="{Binding ItemHeight}"
ItemWidth="{Binding ItemWidth}" ItemWidth="{Binding ItemWidth}"
Orientation="{Binding SelectedOrientation}"> Orientation="{Binding SelectedOrientation}">
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiRed5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiPink5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiPurple5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiViolet5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
</WrapPanel> </WrapPanel>
</DockPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
<ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}" <ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}"
VerticalScrollBarVisibility="{Binding VerticalVisibility}"> VerticalScrollBarVisibility="{Binding VerticalVisibility}">
<DockPanel> <StackPanel>
<Label Background="{DynamicResource SemiGreen2Color}" <u:Divider HorizontalContentAlignment="Left" Content="ElasticWrapPanel" />
Content="ElasticWrapPanel"
DockPanel.Dock="Top" />
<u:ElasticWrapPanel IsFillHorizontal="{Binding IsFillHorizontal}" <u:ElasticWrapPanel IsFillHorizontal="{Binding IsFillHorizontal}"
IsFillVertical="{Binding IsFillVertical}" IsFillVertical="{Binding IsFillVertical}"
ItemHeight="{Binding ItemHeight}" ItemHeight="{Binding ItemHeight}"
ItemWidth="{Binding ItemWidth}" ItemWidth="{Binding ItemWidth}"
Orientation="{Binding SelectedOrientation}"> Orientation="{Binding SelectedOrientation}">
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiRed5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiPink5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiPurple5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiViolet5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True" u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
</u:ElasticWrapPanel> </u:ElasticWrapPanel>
</DockPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
</StackPanel> </StackPanel>
</TabItem> </TabItem>
@@ -298,201 +235,73 @@
<StackPanel> <StackPanel>
<ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}" <ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}"
VerticalScrollBarVisibility="{Binding VerticalVisibility}"> VerticalScrollBarVisibility="{Binding VerticalVisibility}">
<DockPanel> <StackPanel>
<Label Background="{DynamicResource SemiPurple2Color}" <u:Divider HorizontalContentAlignment="Left" Content="WrapPanel" />
Content="WrapPanel"
DockPanel.Dock="Top" />
<WrapPanel ItemHeight="{Binding ItemHeight}" <WrapPanel ItemHeight="{Binding ItemHeight}"
ItemWidth="{Binding ItemWidth}" ItemWidth="{Binding ItemWidth}"
Orientation="{Binding SelectedOrientation}"> Orientation="{Binding SelectedOrientation}">
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiRed5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiPink5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiPurple5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiViolet5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True" u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiIndigo5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiBlue5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiLightBlue5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiCyan5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True" u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
</WrapPanel> </WrapPanel>
</DockPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
<ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}" <ScrollViewer HorizontalScrollBarVisibility="{Binding HorizontalVisibility}"
VerticalScrollBarVisibility="{Binding VerticalVisibility}"> VerticalScrollBarVisibility="{Binding VerticalVisibility}">
<DockPanel> <StackPanel>
<Label Background="{DynamicResource SemiGreen2Color}" <u:Divider HorizontalContentAlignment="Left" Content="ElasticWrapPanel" />
Content="ElasticWrapPanel"
DockPanel.Dock="Top" />
<u:ElasticWrapPanel IsFillHorizontal="{Binding IsFillHorizontal}" <u:ElasticWrapPanel IsFillHorizontal="{Binding IsFillHorizontal}"
IsFillVertical="{Binding IsFillVertical}" IsFillVertical="{Binding IsFillVertical}"
ItemHeight="{Binding ItemHeight}" ItemHeight="{Binding ItemHeight}"
ItemWidth="{Binding ItemWidth}" ItemWidth="{Binding ItemWidth}"
Orientation="{Binding SelectedOrientation}"> Orientation="{Binding SelectedOrientation}">
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiRed5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiPink5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiPurple5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiViolet5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True" u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
<DockPanel Width="{Binding ItemSelfWidth}" <Border Background="{DynamicResource SemiIndigo5Color}" />
Height="{Binding ItemSelfHeight}"> <Border Background="{DynamicResource SemiBlue5Color}" />
<TextBlock VerticalAlignment="Center" Text="Content 1" /> <Border Background="{DynamicResource SemiLightBlue5Color}" />
<TextBox MinHeight="20" /> <Border Background="{DynamicResource SemiCyan5Color}" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 2" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 3" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 4" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 5" />
<TextBox MinHeight="20" />
</DockPanel>
<DockPanel Width="{Binding ItemSelfWidth}"
Height="{Binding ItemSelfHeight}">
<TextBlock VerticalAlignment="Center" Text="Content 6" />
<TextBox MinHeight="20" />
</DockPanel>
<UniformGrid MinWidth="200" <UniformGrid MinWidth="200"
Margin="5,0"
HorizontalAlignment="{Binding CmbHAlign}" HorizontalAlignment="{Binding CmbHAlign}"
VerticalAlignment="{Binding CmbVAlign}" VerticalAlignment="{Binding CmbVAlign}"
u:ElasticWrapPanel.FixToRB="True" u:ElasticWrapPanel.FixToRB="True"
Rows="1"> Rows="1">
<Button MinHeight="20" <Button Content="Search" />
Margin="1" <Button Content="Export" />
Content="Search" />
<Button MinHeight="20"
Margin="1"
Content="Export" />
</UniformGrid> </UniformGrid>
</u:ElasticWrapPanel> </u:ElasticWrapPanel>
</DockPanel> </StackPanel>
</ScrollViewer> </ScrollViewer>
</StackPanel> </StackPanel>
</TabItem> </TabItem>

View File

@@ -20,7 +20,7 @@ public partial class ElasticWrapPanelDemoViewModel : ObservableObject
[ObservableProperty] private double _itemSelfWidth = double.NaN; [ObservableProperty] private double _itemSelfWidth = double.NaN;
[ObservableProperty] private double _itemSelfHeight = double.NaN; [ObservableProperty] private double _itemSelfHeight = double.NaN;
[ObservableProperty] private HorizontalAlignment _cmbHAlign = HorizontalAlignment.Stretch; [ObservableProperty] private HorizontalAlignment _cmbHAlign = HorizontalAlignment.Left;
[ObservableProperty] private VerticalAlignment _cmbVAlign = VerticalAlignment.Stretch; [ObservableProperty] private VerticalAlignment _cmbVAlign = VerticalAlignment.Stretch;
private double _oldItemSelfWidth; private double _oldItemSelfWidth;