Files
ShrlAlgoToolkit/WPFluent.Gallery/Views/Pages/BasicInputPage.xaml

420 lines
21 KiB
Plaintext
Raw Normal View History

2025-04-24 20:56:44 +08:00
<Page
x:Class="WPFluent.Gallery.Views.Pages.BasicInputPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WPFluent.Gallery.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:models="clr-namespace:WPFluent.Gallery.Models"
xmlns:pages="clr-namespace:WPFluent.Gallery.Views.Pages"
xmlns:ui="https://github.com/ShrlAlgo/WPFluent"
xmlns:vm="clr-namespace:WPFluent.Gallery.ViewModels.Pages"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:BasicInputViewModel,
2025-05-05 17:04:06 +08:00
IsDesignTimeCreatable=False}">
2025-04-24 20:56:44 +08:00
<ui:StackPanel Spacing="10">
<GroupBox
2025-05-05 17:04:06 +08:00
Grid.Row="0"
Margin="0"
Header="WPF UI anchor.">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ui:Anchor
2025-05-05 17:04:06 +08:00
IsEnabled="{Binding ElementName=CBDisableAnchor,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}"
Grid.Column="0"
Content="Anchor"
Icon="{ui:SymbolIcon Link24}"
NavigateUri="https://www.shrlalgo.com/" />
2025-04-24 20:56:44 +08:00
<CheckBox
2025-05-05 17:04:06 +08:00
Grid.Column="1"
x:Name="CBDisableAnchor"
Content="禁用anchor" />
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="Badge">
<ui:Badge Appearance="Caution" Content="徽章" />
2025-04-24 20:56:44 +08:00
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="IconButton">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<ui:StackPanel Orientation="Horizontal" Spacing="5">
<Button Click="Button_Click" IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}">
<ui:SymbolIcon Symbol="Button20" />
</Button>
<Button
Command="{Binding ButtonClickCommand}"
Content="消息"
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<Button
2025-04-24 20:56:44 +08:00
Grid.Column="0"
2025-05-05 17:04:06 +08:00
Content="默认按钮"
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<ui:Button
Grid.Column="0"
Content="UiButton"
2025-04-24 20:56:44 +08:00
Icon="{ui:SymbolIcon Fluent24}"
2025-05-05 17:04:06 +08:00
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<ui:Button
2025-04-24 20:56:44 +08:00
HorizontalAlignment="Center"
Appearance="Primary"
2025-05-05 17:04:06 +08:00
Content="AccentUiButton"
Icon="{ui:SymbolIcon Fluent24}"
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<ui:Button
Appearance="Secondary"
Content="FontIcon button"
Icon="{ui:FontIcon 🌈}"
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<ui:Button
Appearance="Danger"
Content="ImageIconButton"
Icon="{ui:ImageIcon pack://application:\,\,\,/WPFluent.Gallery;component/wpfui.png}"
IsEnabled="{Binding ElementName=CBDisableButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
</ui:StackPanel>
2025-04-24 20:56:44 +08:00
<CheckBox
2025-05-05 17:04:06 +08:00
x:Name="CBDisableButton"
Grid.Column="1"
HorizontalAlignment="Right"
Content="禁用button" />
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="Toggle">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<ui:StackPanel Orientation="Horizontal" Spacing="10">
<ui:ToggleSwitch
Grid.Column="0"
IsEnabled="{Binding ElementName=CBDisableToggle,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}"
OffContent="关"
OnContent="开" />
<ToggleButton
2025-04-24 20:56:44 +08:00
Grid.Column="0"
2025-05-05 17:04:06 +08:00
Content="切换按钮"
IsEnabled="{Binding ElementName=CBDisableToggle,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
</ui:StackPanel>
2025-04-24 20:56:44 +08:00
<CheckBox
2025-05-05 17:04:06 +08:00
x:Name="CBDisableToggle"
Grid.Column="1"
HorizontalAlignment="Right"
Content="禁用Toggle" />
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="CheckBox">
<StackPanel Orientation="Horizontal">
<CheckBox Content="复选框" />
2025-04-24 20:56:44 +08:00
<CheckBox
2025-05-05 17:04:06 +08:00
Content="复选框"
IsChecked="{x:Null}"
IsThreeState="True" />
2025-04-24 20:56:44 +08:00
</StackPanel>
2025-05-05 17:04:06 +08:00
</GroupBox>
2025-04-24 20:56:44 +08:00
<GroupBox Header="ComboBox">
2025-05-05 17:04:06 +08:00
<ui:StackPanel Orientation="Horizontal" Spacing="10">
2025-04-24 20:56:44 +08:00
<ComboBox
2025-05-05 17:04:06 +08:00
MinWidth="150"
HorizontalAlignment="Left"
ItemsSource="{Binding ViewModel.ComboBoxFontFamilies, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type pages:BasicInputPage}, Mode=FindAncestor}}"
SelectedIndex="0">
2025-04-24 20:56:44 +08:00
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontFamily="{Binding}" Text="{Binding}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
2025-05-05 17:04:06 +08:00
<ui:ComboBoxEx ItemsSource="{Binding Animals}" />
<ui:CheckComboBox
DisplayMemberPath="GradeLevel"
ItemsSource="{Binding Grades,Mode=TwoWay}"
PlaceholderText="多选ComboBox"
SelectedObjList="{Binding SelectedItems, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<ui:ComboBoxEx
MinWidth="150"
HorizontalAlignment="Left"
Header="带标题:"
HeaderPlacement="Left"
ItemsSource="{Binding ViewModel.ComboBoxFontFamilies, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type pages:BasicInputPage}, Mode=FindAncestor}}" />
</ui:StackPanel>
2025-04-24 20:56:44 +08:00
</GroupBox>
<GroupBox Margin="0" Header="A DropDownButton">
2025-05-05 17:04:06 +08:00
<ui:DropDownButton Content="你好" Icon="{ui:SymbolIcon Fluent24}">
2025-04-24 20:56:44 +08:00
<ui:DropDownButton.Flyout>
<ContextMenu>
2025-05-05 17:04:06 +08:00
<MenuItem Header="添加" />
<MenuItem Header="移除" />
<MenuItem Header="发送" />
<MenuItem Header="你好" />
2025-04-24 20:56:44 +08:00
</ContextMenu>
</ui:DropDownButton.Flyout>
</ui:DropDownButton>
</GroupBox>
<GroupBox Margin="0" Header="WPF UI hyperlink.">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<ui:StackPanel Orientation="Horizontal" Spacing="10">
<ui:HyperlinkButton
2025-04-24 20:56:44 +08:00
Grid.Column="0"
Content="WPF UI hyperlink"
Icon="{ui:SymbolIcon Link24}"
2025-05-05 17:04:06 +08:00
IsEnabled="{Binding ElementName=CBDisableHyperlink,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}"
NavigateUri="https://www.shrlalgo.cn/" />
<ui:HyperlinkButton
Grid.Column="0"
Content="Github超链接"
Icon="{ui:FontIcon 🌈}"
IsEnabled="{Binding ElementName=CBDisableHyperlink,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}"
NavigateUri="https://www.github.com/shrlalgo" />
<ui:HyperlinkButton
Grid.Column="0"
Content="博客超链接"
Icon="{ui:ImageIcon pack://application:\,\,\,/WPFluent.Gallery;component/wpfui.png}"
IsEnabled="{Binding ElementName=CBDisableHyperlink,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}"
NavigateUri="https://www.shrlalgo.cn/" />
</ui:StackPanel>
2025-04-24 20:56:44 +08:00
<CheckBox
2025-05-05 17:04:06 +08:00
x:Name="CBDisableHyperlink"
Grid.Column="1"
HorizontalAlignment="Right"
Content="禁用Hyperlink" />
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="Hyperlink" />
<GroupBox Margin="0" Header="RadioButton">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<StackPanel Grid.Column="0" Orientation="Horizontal">
2025-04-24 20:56:44 +08:00
<RadioButton
2025-05-05 17:04:06 +08:00
Content="选项 1"
GroupName="radio_group_one"
IsChecked="True"
IsEnabled="{Binding ElementName=CBDisableRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
2025-04-24 20:56:44 +08:00
<RadioButton
2025-05-05 17:04:06 +08:00
Content="选项 2"
GroupName="radio_group_one"
IsEnabled="{Binding ElementName=CBDisableRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
2025-04-24 20:56:44 +08:00
<RadioButton
2025-05-05 17:04:06 +08:00
Content="选项 1"
2025-04-24 20:56:44 +08:00
FlowDirection="RightToLeft"
GroupName="radio_group_two"
2025-05-05 17:04:06 +08:00
IsChecked="True"
IsEnabled="{Binding ElementName=CBDisableRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
<RadioButton
Content="选项 2"
2025-04-24 20:56:44 +08:00
FlowDirection="RightToLeft"
2025-05-05 17:04:06 +08:00
GroupName="radio_group_two"
IsEnabled="{Binding ElementName=CBDisableRadioButton,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
2025-04-24 20:56:44 +08:00
</StackPanel>
<CheckBox
2025-05-05 17:04:06 +08:00
x:Name="CBDisableRadioButton"
Grid.Column="1"
HorizontalAlignment="Right"
Content="禁用Radiobuttons" />
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Margin="0" Header="Rating.">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ui:RatingControl
2025-05-05 17:04:06 +08:00
x:Name="UiRating"
HorizontalAlignment="Left"
HalfStarEnabled="{Binding ElementName=CBSetFull,Path=IsChecked}"
IsEnabled="{Binding ElementName=CBDisableRating,Path=IsChecked,Converter={StaticResource InvertBooleanConverter}}" />
2025-04-24 20:56:44 +08:00
<StackPanel
2025-05-05 17:04:06 +08:00
Grid.Column="1"
MinWidth="60"
Margin="0,4,0,0"
VerticalAlignment="Center">
<Label Margin="0,0,0,-4" Content="值:" />
<TextBlock Margin="0" Text="{Binding ElementName=UiRating,Path=Value}" />
2025-04-24 20:56:44 +08:00
</StackPanel>
2025-05-05 17:04:06 +08:00
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<CheckBox
x:Name="CBSetFull"
2025-04-24 20:56:44 +08:00
VerticalAlignment="Center"
2025-05-05 17:04:06 +08:00
Content="支持半星" />
<CheckBox
x:Name="CBDisableRating"
2025-04-24 20:56:44 +08:00
VerticalAlignment="Center"
2025-05-05 17:04:06 +08:00
Content="禁用rating" />
</StackPanel>
2025-04-24 20:56:44 +08:00
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="Slider">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<StackPanel Orientation="Horizontal">
<Slider
2025-04-24 20:56:44 +08:00
Width="200"
2025-05-05 17:04:06 +08:00
Margin="10,0"
2025-04-24 20:56:44 +08:00
HorizontalAlignment="Left"
VerticalAlignment="Center"
Value="{Binding ViewModel.RangeSliderValue, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type pages:BasicInputPage}, Mode=FindAncestor}}"
2025-05-05 17:04:06 +08:00
IsSnapToTickEnabled="{Binding ElementName=CBSnapToTick,Path=IsChecked}"
2025-04-24 20:56:44 +08:00
Maximum="100"
Minimum="0"
TickFrequency="20"
2025-05-05 17:04:06 +08:00
TickPlacement="{Binding ElementName=CBPlacement,Path=SelectedItem}" />
<TextBlock VerticalAlignment="Center" Text="值:" />
<TextBlock VerticalAlignment="Center" Text="{Binding ViewModel.RangeSliderValue, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type pages:BasicInputPage}, Mode=FindAncestor}}" />
</StackPanel>
2025-04-24 20:56:44 +08:00
<Grid Grid.Column="1">
2025-05-05 17:04:06 +08:00
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<ComboBox
x:Name="CBPlacement"
Margin="10,0"
SelectedIndex="0">
<ComboBox.ItemsSource>
<x:Array Type="{x:Type TickPlacement}">
<TickPlacement>None</TickPlacement>
<TickPlacement>TopLeft</TickPlacement>
<TickPlacement>BottomRight</TickPlacement>
<TickPlacement>Both</TickPlacement>
</x:Array>
</ComboBox.ItemsSource>
</ComboBox>
<ComboBox
x:Name="CBOrientation"
Margin="10,0"
SelectedIndex="0">
<ComboBox.ItemsSource>
<x:Array Type="{x:Type Orientation}">
<Orientation>Horizontal</Orientation>
<Orientation>Vertical</Orientation>
</x:Array>
</ComboBox.ItemsSource>
</ComboBox>
<CheckBox x:Name="CBSnapToTick" Content="吸附刻度" />
2025-04-24 20:56:44 +08:00
</StackPanel>
</Grid>
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Margin="0" Header="SplitButton">
<ui:StackPanel Orientation="Horizontal" Spacing="10">
<ui:SplitButton Icon="{ui:SymbolIcon PaintBrush24}">
<ui:SplitButton.Flyout>
<ContextMenu>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="Red"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="Blue"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="White"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</ui:SplitButton.Flyout>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="Green"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</ui:SplitButton>
<ui:SplitButton CornerRadius="4" Padding="0">
<ui:SplitButton.Flyout>
<ContextMenu>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="Red"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="Blue"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="20"
Background="White"
CornerRadius="4" />
2025-05-05 17:04:06 +08:00
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</ui:SplitButton.Flyout>
<Border
2025-04-24 20:56:44 +08:00
Width="35"
Height="25"
Background="Green"
CornerRadius="4,0,0,4" />
2025-05-05 17:04:06 +08:00
</ui:SplitButton>
</ui:StackPanel>
2025-04-24 20:56:44 +08:00
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Margin="0" Header="ThumbRate">
2025-04-24 20:56:44 +08:00
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
2025-05-05 17:04:06 +08:00
<ui:ThumbRate x:Name="ThumbRate" HorizontalAlignment="Left" />
2025-04-24 20:56:44 +08:00
<StackPanel
2025-05-05 17:04:06 +08:00
Grid.Column="1"
MinWidth="60"
VerticalAlignment="Center">
<Label Content="状态:" />
<TextBlock Text="{Binding ElementName=ThumbRate,Path=State}" />
2025-04-24 20:56:44 +08:00
</StackPanel>
</Grid>
</GroupBox>
2025-05-05 17:04:06 +08:00
<GroupBox Header="ColorPicker">
<StackPanel Orientation="Horizontal">
<ui:ColorPicker x:Name="ColorPicker" />
<ui:ColorPickerControl VerticalAlignment="Top" />
</StackPanel>
</GroupBox>
2025-04-24 20:56:44 +08:00
</ui:StackPanel>
</Page>