Files
Shrlalgo.RvKits/MelskinTest/MainWindow.xaml
2026-02-22 20:03:42 +08:00

1164 lines
64 KiB
XML

<ms:MelWindow
x:Class="MelskinTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dm="clr-namespace:MelskinTest.DataModel"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ms="https://github.com/ShrlAlgo/Melskin"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:test="clr-namespace:MelskinTest"
Title="样式示例"
Width="1000"
Height="800"
d:DataContext="{d:DesignInstance Type=test:MainWindow}"
d:Height="Auto"
d:SizeToContent="WidthAndHeight"
Icon="/Resources/Images/ImageTest.png"
Loaded="Window_Loaded"
Selector.SelectionChanged="TabControl_SelectionChanged"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<ms:MelWindow.TitleBarLeftContent>
<Menu>
<MenuItem Header="文件">
<MenuItem Header="打开" />
<MenuItem Header="打开最近文件...">
<MenuItem Header="文件01" />
<MenuItem Header="文件02" />
<MenuItem Header="文件03" />
</MenuItem>
<Separator />
<MenuItem Header="保存" />
<MenuItem Header="另存为..." />
</MenuItem>
<MenuItem Header="编辑">
<MenuItem Header="删除" />
<MenuItem
Header="编辑模式"
IsCheckable="True"
IsChecked="True" />
</MenuItem>
<MenuItem
Header="复选"
IsCheckable="True"
IsChecked="True" />
<MenuItem Header="帮助">
<MenuItem Header="关于" />
</MenuItem>
</Menu>
</ms:MelWindow.TitleBarLeftContent>
<ms:MelWindow.TitleBarRightContent>
<UniformGrid Rows="1">
<ComboBox
x:Name="PrimaryColorSelectComboBox"
VerticalContentAlignment="Center"
SelectionChanged="PrimaryColorSelectComboBox_SelectionChanged"
Style="{StaticResource FlattenComboBoxStyle}">
<ComboBoxItem>
<Rectangle
Width="30"
Height="20"
Fill="#2C63F2"
RadiusX="4"
RadiusY="4" />
</ComboBoxItem>
<ComboBoxItem>
<Rectangle
Width="30"
Height="20"
Fill="#2E3F36"
RadiusX="4"
RadiusY="4" />
</ComboBoxItem>
<ComboBoxItem>
<Rectangle
Width="30"
Height="20"
Fill="#3C2A59"
RadiusX="4"
RadiusY="4" />
</ComboBoxItem>
</ComboBox>
<ms:ToggleSwitch
ms:ControlAssist.OffContent="{ms:Icon Nightlight}"
ms:ControlAssist.OnContent="{ms:Icon Sunny}"
Checked="ThemeToggle_OnCheckedChanged"
Style="{StaticResource SlotToggleSwitch}"
Unchecked="ThemeToggle_OnCheckedChanged" />
</UniformGrid>
</ms:MelWindow.TitleBarRightContent>
<ms:MelWindow.Resources>
<ResourceDictionary>
<test:MainViewModel x:Key="MainViewModel" />
<!-- <ResourceDictionary.MergedDictionaries> -->
<!-- <enu:ThemesDictionary Theme="Dark" /> -->
<!-- <enu:ControlsDictionary /> -->
<!-- </ResourceDictionary.MergedDictionaries> -->
<dm:DataGridDemo x:Key="Dgd" />
<ContextMenu x:Key="ContextMenuDemo">
<MenuItem Header="菜单01" />
<MenuItem Header="菜单02" />
<Separator />
<MenuItem Header="菜单03">
<MenuItem Header="菜单A1" />
<MenuItem Header="菜单A2" />
<Separator />
<MenuItem Header="菜单A3" />
</MenuItem>
</ContextMenu>
</ResourceDictionary>
</ms:MelWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="24" />
</Grid.RowDefinitions>
<!-- 工具栏 -->
<ToolBarTray Margin="4,4,4,0">
<ToolBar Foreground="{DynamicResource PrimaryFocusedBrush}" Header="工具栏">
<Button Click="Switch_OnClick" Content="切换主题" />
<ToggleButton Content="切换" />
<Separator />
<RadioButton Content="单选框A" IsChecked="True" />
<RadioButton Content="单选框B" />
<TextBox Width="100" Text="文本框" />
<CheckBox Content="复选框" />
<Separator />
<ComboBox Width="100" SelectedIndex="0">
<ComboBoxItem Content="选项01" />
<ComboBoxItem Content="选项02" />
<ComboBoxItem Content="选项03" />
</ComboBox>
</ToolBar>
<ToolBar Foreground="{DynamicResource PrimaryFocusedBrush}" Header="工具栏">
<Button
x:Name="Test"
Click="Test_OnClick"
Content="测试窗口" />
<Button Click="Icon_OnClick" Content="图标" />
<Button Click="ColorPalette_OnClick" Content="配色" />
<Button Click="ShowNeumorphism_Click" Content="Neumorphism" />
</ToolBar>
</ToolBarTray>
<ms:Anchor Grid.Row="1" Margin="4">
<ms:StackPanel Spacing="5">
<StackPanel ms:ControlAssist.AnchorHeaderText="警告提示 Alert">
<StackPanel>
<CheckBox x:Name="IsBanner" Content="标题" />
<ms:Alert
Margin="5"
Banner="{Binding ElementName=IsBanner, Path=IsChecked}"
Description="这是一个信息提示框。"
Message="信息" />
<ms:Alert
Margin="5"
Banner="{Binding ElementName=IsBanner, Path=IsChecked}"
Description="这是一个成功提示框。"
Message="成功"
Type="Success" />
<ms:Alert
Margin="5"
Banner="{Binding ElementName=IsBanner, Path=IsChecked}"
Closable="True"
Description="这是一个警告提示框。"
Message="警告"
Type="Warning" />
<ms:Alert
Margin="5"
Banner="{Binding ElementName=IsBanner, Path=IsChecked}"
Description="这是一个错误提示框。"
Message="错误"
Type="Error" />
</StackPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="通知 Toast">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="5"
VerticalAlignment="Center"
Text="Notification:" />
<Button Click="LeftTopButton_Click" Content="左上" />
<Button Click="RightTopButton_Click" Content="右上" />
<Button Click="LeftBottomButton_Click" Content="左下" />
<Button Click="RightBottomButton_Click" Content="右下" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="5"
VerticalAlignment="Center"
Text="Toast:" />
<Button Click="Info_Click" Content="Info" />
<Button Click="Success_Click" Content="Success" />
<Button Click="Warning_Click" Content="Warning" />
<Button Click="Error_Click" Content="Error" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="5"
VerticalAlignment="Center"
Text="Modal:" />
<Button Click="ShowBasicModal_Click" Content="确认模态框" />
<Button Click="ShowAsyncModal_Click" Content="异步模态框" />
<Button Click="ShowInfoModal_Click" Content="消息模态框" />
</StackPanel>
</StackPanel>
</StackPanel>
<ms:FlexibleRowPanel ms:ControlAssist.AnchorHeaderText="文字 Text">
<ms:CodeBox Title="代码块">
<ms:CodeBox.Description>代码块基本使用</ms:CodeBox.Description>
<ms:CodeBox.Content>
<ms:FlexibleRowPanel LayoutMode="Auto">
<ms:Heading Size="ExtraLarge" Text="ExtraLarge" />
<ms:Heading Size="Large" Text="Large" />
<ms:Heading Size="Medium" Text="Medium" />
<ms:Heading Size="Normal" Text="Normal" />
<ms:Heading Size="Small" Text="Small" />
<ms:Heading Size="Tiny" Text="Tiny" />
</ms:FlexibleRowPanel>
</ms:CodeBox.Content>
<ms:CodeBox.Code>
&lt;ResourceDictionary Source="pack://application:,,,/Antd;component/Styles/Theme.xaml" /&gt;\ms
&lt;ResourceDictionary Source="pack://application:,,,/Antd;component/Styles/AntIcons.xaml" /&gt;\ms\ms
xmlns:Antd="clr-namespace:Antd.Controls;assembly=antd"\ms\ms
&lt;WrapPanel&gt;\ms
\t&lt;Antd:Tag&gt;Tag 1&lt;/Antd:Tag&gt;\ms
\t&lt;Antd:Tag&gt;Link&lt;/Antd:Tag&gt;\ms
\t&lt;Antd:Tag Closable="True"&gt;Tag 2&lt;/Antd:Tag&gt;\ms
\t&lt;Antd:Tag Closable="True" cal:Message.Attach="[Event Closing] = [Action Closing($source, $eventArgs)]"&gt;Prevent Default&lt;/Antd:Tag&gt;\ms
&lt;/WrapPanel&gt;
</ms:CodeBox.Code>
</ms:CodeBox>
</ms:FlexibleRowPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="分隔条 Divider">
<ms:Divider Margin="0,16" Content="Text" />
<ms:Divider
Margin="0,16"
Content="Left Text"
TextOrientation="Left" />
<ms:Divider
Margin="0,16"
Content="Right Text"
TextOrientation="Right" />
<ms:FlexibleRowPanel>
<ms:Divider
Height="20"
Content="Text"
Orientation="Vertical" />
<Separator Height="20" Style="{StaticResource VerticalSeparatorStyle}" />
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="图标、文本、标签">
<StackPanel>
<ms:FlexibleRowPanel>
<ms:IconElement Symbol="FontDownload" />
<TextBlock
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="{StaticResource MaterialIconFont}"
Text="{ms:SymbolIcon Symbol=AddBox}" />
<ms:IconElement
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="14"
FontWeight="Regular"
Foreground="{DynamicResource PrimaryNormalBrush}"
Symbol="Save" />
<ms:Chip Content="必应" Url="www.bing.com">
<ms:Chip.Header>
<ms:IconElement Symbol="Search" />
</ms:Chip.Header>
</ms:Chip>
<ms:Chip
Content="C盘"
HeadBackground="{DynamicResource PrimaryGradientBrush}"
Url="C:\">
<ms:Chip.Header>
<ms:IconElement Symbol="HardDisk" />
</ms:Chip.Header>
</ms:Chip>
<ms:Chip
Content="C盘"
HeadBackground="{DynamicResource PrimaryGradientBrush}"
Header="标题"
Url="C:\" />
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel>
<ms:Tag Content="默认标签" />
<ms:Tag
Closable="True"
Content="颜色标签"
Foreground="{DynamicResource PrimaryNormalBrush}" />
<ms:Tag Closable="True" Content="多彩的" />
<ms:Tag
Background="{DynamicResource PrimaryNormalBrush}"
Closable="True"
Content="白色前景色"
Foreground="White" />
<ms:CheckableTag Content="可切换标签" IsChecked="True" />
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel>
<ms:Avatar>
<ms:IconElement Foreground="{DynamicResource PrimaryGradientBrush}" Symbol="AccountCircle" />
</ms:Avatar>
<ms:Avatar Foreground="{DynamicResource PrimaryNormalBrush}">
<TextBlock Margin="5" Text="Head" />
</ms:Avatar>
<ms:Badge Status="Success" />
<ms:Badge Count="10">
<Button Content="徽章" />
</ms:Badge>
<ms:Badge Count="100" OverflowCount="99">
<Button Content="徽章" />
</ms:Badge>
<ms:Badge Status="Warning">
<Button Content="徽章" />
</ms:Badge>
</ms:FlexibleRowPanel>
</StackPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="普通按钮 Button">
<StackPanel>
<ms:UniformGrid
ColumnSpacing="0"
Columns="7"
RowSpacing="0"
Rows="1">
<Button
ms:ControlAssist.Icon="{ms:Icon SymbolValue=SmartButton}"
Content="基本"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}" />
<Button
ms:ControlAssist.AppearanceType="Primary"
Content="主要"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
ToolTip="Primary"
ToolTipService.Placement="Top">
<!--<ms:ControlAssist.Icon>
<ms:IconElement FontFamily="{StaticResource BoxIcons}" Glyph="&#xEADF;" />
</ms:ControlAssist.Icon>-->
</Button>
<Button
ms:ControlAssist.AppearanceType="Info"
Content="信息"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
ToolTip="Info"
ToolTipService.Placement="Top" />
<Button
ms:ControlAssist.AppearanceType="Success"
Content="成功"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
ToolTip="Succeed"
ToolTipService.InitialShowDelay="100"
ToolTipService.Placement="Bottom" />
<Button ms:ControlAssist.AppearanceType="Warning" Content="警告" />
<Button ms:ControlAssist.AppearanceType="Error" Content="危险" />
<CheckBox x:Name="CBIsEnabledButton" Content="禁用按钮" />
</ms:UniformGrid>
<ms:UniformGrid
ColumnSpacing="5"
Columns="6"
Rows="1">
<Button IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}">
<StackPanel Orientation="Horizontal">
<ms:IconElement Margin="5,0" Symbol="Box" />
<TextBlock Text="图标" />
</StackPanel>
</Button>
<ms:Hyperlink
Content="超链接"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
NavigateUri="www.bing.com" />
<Button
ms:ControlAssist.IsRunning="True"
Content="运行中..."
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}" />
<Button
ms:ControlAssist.Icon="{ms:Icon SymbolValue=MagicButton}"
Content="图标"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}" />
<Button
ms:ControlAssist.Icon="{ms:Icon SymbolValue=Add}"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
Style="{StaticResource IconButtonStyle}" />
</ms:UniformGrid>
</StackPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="输入框 Input">
<CheckBox x:Name="CBIsEnabledBox" Content="禁用文本框" />
<ms:UniformGrid Columns="5" Rows="2">
<TextBox
VerticalAlignment="Top"
ms:InputAssist.Clearable="True"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
Text="Regions" />
<TextBox IsReadOnly="True" Text="只读" />
<TextBox
ms:InputAssist.Clearable="True"
ms:InputAssist.PlaceholderText="水印"
ms:InputAssist.Prefix="Text"
ms:InputAssist.Suffix="mm"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
Text="123" />
<TextBox ms:InputAssist.PlaceholderText="水印" ms:InputAssist.Prefix="Prefix">
<ms:InputAssist.Suffix>
<Button
VerticalContentAlignment="Stretch"
ms:ControlAssist.CornerRadius="0 4 4 0"
Content="Search"
Style="{StaticResource FlattenButtonStyle}" />
</ms:InputAssist.Suffix>
</TextBox>
<TextBox ms:InputAssist.PlaceholderText="请输入用户名" IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}">
<ms:InputAssist.Prefix>
<ms:IconElement Foreground="#3F000000" Symbol="VerifiedUser" />
</ms:InputAssist.Prefix>
<ms:InputAssist.Suffix>
<ms:IconElement Foreground="#3F000000" Symbol="Close" />
</ms:InputAssist.Suffix>
</TextBox>
<TextBox
VerticalAlignment="Center"
IsReadOnly="True"
Text="只读" />
<PasswordBox ms:InputAssist.Password="666" IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}" />
<PasswordBox
ms:InputAssist.Clearable="True"
ms:InputAssist.IsPasswordVisible="True"
ms:InputAssist.Password="{Binding Password}"
ms:InputAssist.PlaceholderText="请输入密码"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}" />
<ms:NumberBox
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
MaxValue="100"
MinValue="-100"
Precision="3"
Step="0.05"
Value="10" />
<ms:NumericBox
CurValue="100"
IsEnabled="{Binding ElementName=CBIsEnabledButton, Path=IsChecked, Converter={x:Static ms:InvertBooleanConverter.Instance}}"
Style="{StaticResource DefaultTextBoxStyle}" />
</ms:UniformGrid>
<RichTextBox>
<FlowDocument>
<Paragraph>
<Bold>流文档</Bold>
<Run Foreground="{StaticResource PrimaryGradientBrush}">富文本框.</Run>
</Paragraph>
</FlowDocument>
</RichTextBox>
<ms:FlexibleRowPanel>
<ms:ChooseBox />
<ms:ChooseBox IsEnabled="False" />
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="下拉框 ComboBox">
<ms:FlexibleRowPanel>
<ComboBox IsEditable="True">
<ComboBoxItem Content="可编辑" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>
<ComboBox
IsEditable="True"
IsEnabled="False"
SelectedIndex="0">
<ComboBoxItem Content="可编辑" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>
<ComboBox SelectedIndex="0">
<ComboBoxItem Content="选项 A" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>
<ComboBox IsEnabled="False" SelectedIndex="0">
<ComboBoxItem Content="选项 A" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>
<ms:SearchableComboBox ms:InputAssist.PlaceholderText="搜索..">
<ComboBoxItem Content="选项 A" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ms:SearchableComboBox>
<ms:SearchableComboBox
ms:InputAssist.PlaceholderText="搜索地区.."
ItemsSource="{Binding Areas}"
SelectedItem="{Binding SearchArea}" />
<!--<ComboBox Style="{StaticResource FloatComboBoxStyle}">
<ComboBoxItem Content="选项 A" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>
<ComboBox IsEditable="True" Style="{StaticResource FloatComboBoxStyle}">
<ComboBoxItem Content="选项 A" />
<ComboBoxItem Content="选项 B" />
<ComboBoxItem Content="选项 C" />
</ComboBox>-->
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel ms:ControlAssist.AnchorHeaderText="级联选择 Cascader">
<ms:Cascader
VerticalAlignment="Top"
DisplayMemberPath="Name"
ItemsSource="{Binding StaffList, Mode=TwoWay}"
SelectedValue="{Binding SelectedItem, Mode=TwoWay}"
SubmenuMemberPath="Children" />
<ms:Cascader
VerticalAlignment="Top"
DisplayMemberPath="Name"
IsEnabled="False"
ItemsSource="{Binding StaffList, Mode=TwoWay}"
SelectedValue="{Binding SelectedItem, Mode=TwoWay}"
SubmenuMemberPath="Children" />
<ms:Cascader
DisplayMemberPath="Name"
IsSearchable="False"
ItemsSource="{Binding StaffList, Mode=TwoWay}"
SelectedValue="{Binding SelectedItem, Mode=TwoWay}"
SubmenuMemberPath="Children" />
<StackPanel VerticalAlignment="Center" Orientation="Horizontal">
<TextBlock
Margin="3,0"
FontWeight="Bold"
Text="详情:" />
<StackPanel Orientation="Horizontal">
<TextBlock Margin="3,0" Text="姓名: " />
<TextBlock Margin="3,0" Text="{Binding SelectedItem.Name, FallbackValue='N/A'}" />
</StackPanel>
<StackPanel Margin="3,0" Orientation="Horizontal">
<TextBlock Margin="3,0" Text="年龄: " />
<TextBlock Margin="3,0" Text="{Binding SelectedItem.Age, FallbackValue='N/A'}" />
</StackPanel>
</StackPanel>
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel>
<ms:AutoComplete
ms:InputAssist.PlaceholderText="请输入地区.."
ItemsSource="{Binding Areas}"
SelectedItem="{Binding AutoArea}"
Text="{Binding Input, Mode=TwoWay}" />
<ms:AutoComplete
ms:InputAssist.Clearable="False"
ItemsSource="{Binding Areas}"
SelectedItem="{Binding AutoArea}"
Text="{Binding Input, Mode=TwoWay}" />
<ms:AutoComplete
IsEnabled="False"
ItemsSource="{Binding Areas}"
SelectedItem="{Binding AutoArea}"
Text="{Binding AutoArea.Name, Mode=TwoWay}" />
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel Spacing="5">
<ms:MultiComboBox
x:Name="Regions"
DisplayMemberPath="Name"
ItemsSource="{Binding Areas}"
PlaceHolderText="请选择区域..."
SelectedItem="{Binding Area}"
SelectionMode="Single" />
<ms:MultiComboBox
DisplayMemberPath="Name"
IsFilteringEnabled="False"
ItemsSource="{Binding Areas}"
PlaceHolderText="请选择区域..."
SelectedItem="{Binding Area}"
SelectionMode="Single" />
<ms:MultiComboBox
DisplayMemberPath="Name"
ItemsSource="{Binding Areas}"
PlaceHolderText="请选择区域..."
SelectedItems="{Binding SelectedListAreas}"
SelectionMode="Multiple" />
<ms:MultiComboBox
IsFilteringEnabled="False"
ItemsSource="{Binding Areas}"
PlaceHolderText="请选择区域..."
SelectedItems="{Binding SelectedObservableAreas}"
SelectionMode="Multiple" />
<Button Command="{Binding AddAreaCommand}" Content="测试" />
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="切换按钮 ToggleButton">
<ms:FlexibleRowPanel>
<ToggleButton Content="切换按钮" />
<ToggleButton Content="切换按钮" IsChecked="True" />
<ToggleButton
Content="禁用切换按钮"
IsChecked="False"
IsEnabled="False" />
<ToggleButton
Content="禁用切换按钮"
IsChecked="True"
IsEnabled="False" />
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel>
<ms:ToggleSwitch IsChecked="False" />
<ms:ToggleSwitch IsChecked="False" IsEnabled="False" />
<ms:ToggleSwitch IsChecked="True" />
<ms:ToggleSwitch IsChecked="True" IsEnabled="False" />
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="文本标签 Label">
<UniformGrid Rows="1">
<Label Content="默认标签" />
<Label Content="主要标签" Style="{StaticResource LabelPrimary}" />
<Label Content="禁用默认标签" IsEnabled="False" />
<Label
Content="禁用主要标签"
IsEnabled="False"
Style="{StaticResource LabelPrimary}" />
</UniformGrid>
</StackPanel>
<Expander Header="折叠" />
<StackPanel ms:ControlAssist.AnchorHeaderText="复选框 CheckBox">
<UniformGrid Rows="1">
<CheckBox Content="复选框" />
<CheckBox Content="复选框" IsEnabled="False" />
<CheckBox Content="复选框" IsChecked="{x:Null}" />
<CheckBox
Content="复选框"
IsChecked="{x:Null}"
IsEnabled="False" />
<CheckBox Content="复选框" IsChecked="True" />
<CheckBox
Content="复选框"
IsChecked="True"
IsEnabled="False" />
</UniformGrid>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="单选框 RadioButton">
<ms:FlexibleRowPanel>
<RadioButton
Content="单选按钮 A"
GroupName="RadioG1"
IsChecked="True" />
<RadioButton
Content="单选按钮 B"
GroupName="RadioG1"
IsChecked="{x:Null}" />
<RadioButton Content="单选按钮 C" GroupName="RadioG1" />
<RadioButton
Content="禁用单选按钮 A"
GroupName="RadioG2"
IsChecked="True"
IsEnabled="False" />
<RadioButton
Content="禁用单选按钮 B"
GroupName="RadioG2"
IsChecked="{x:Null}"
IsEnabled="False" />
<RadioButton
Content="禁用单选按钮 C"
GroupName="RadioG2"
IsEnabled="False" />
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="滑动/滚动条 Slider">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<UniformGrid Grid.ColumnSpan="2" Rows="1">
<CheckBox x:Name="IsSpining" Content="加载中" />
<CheckBox x:Name="ProgressCheckbox" Content="进度待定" />
<CheckBox x:Name="ProgressEnable" Content="禁用" />
</UniformGrid>
<StackPanel Grid.Row="1">
<StackPanel Height="100" Orientation="Horizontal">
<Slider
x:Name="ProgressVerticalSlider"
Maximum="100"
Minimum="0"
Orientation="Vertical"
Value="25" />
<Slider
x:Name="ProgressVerticalSlider1"
IsEnabled="False"
Maximum="100"
Minimum="0"
Orientation="Vertical"
Value="25" />
<ProgressBar
Height="100"
IsIndeterminate="{Binding ElementName=ProgressCheckbox, Path=IsChecked}"
Maximum="100"
Minimum="0"
Orientation="Vertical"
Value="{Binding ElementName=ProgressVerticalSlider, Path=Value}" />
<ProgressBar
Height="100"
IsEnabled="False"
IsIndeterminate="{Binding ElementName=ProgressCheckbox, Path=IsChecked}"
Maximum="100"
Minimum="0"
Orientation="Vertical"
Value="{Binding ElementName=ProgressVerticalSlider, Path=Value}" />
<ProgressBar
Height="100"
IsEnabled="False"
IsIndeterminate="True"
Maximum="100"
Minimum="0"
Orientation="Vertical"
Value="100" />
</StackPanel>
</StackPanel>
<Grid
Grid.Row="1"
Grid.Column="1"
Panel.ZIndex="10">
<ms:Spin Spinning="{Binding ElementName=IsSpining, Path=IsChecked}" Tip="加载中...">
<StackPanel x:Name="SpinPanel">
<Slider
x:Name="ProgressSlider"
Maximum="100"
Minimum="0"
Value="50" />
<Slider
x:Name="ProgressTickSlider"
Maximum="100"
Minimum="0"
TickFrequency="10"
TickPlacement="TopLeft" />
<Slider
x:Name="ProgressSlider1"
IsEnabled="False"
Maximum="100"
Minimum="0"
Value="25" />
<ProgressBar
IsIndeterminate="{Binding ElementName=ProgressCheckbox, Path=IsChecked}"
Maximum="100"
Minimum="0"
Value="{Binding ElementName=ProgressSlider, Path=Value}" />
<ProgressBar
IsEnabled="False"
IsIndeterminate="{Binding ElementName=ProgressCheckbox, Path=IsChecked}"
Maximum="100"
Minimum="0"
Value="{Binding ElementName=ProgressSlider, Path=Value}" />
</StackPanel>
</ms:Spin>
<ms:Spin
HorizontalAlignment="Left"
Spinning="{Binding ElementName=IsSpining, Path=IsChecked}"
Tip="加载中...">
<ms:Spin.Indicator>
<ms:IconElement Symbol="Downloading" />
</ms:Spin.Indicator>
</ms:Spin>
</Grid>
</Grid>
<UniformGrid Rows="1">
<ProgressBar Style="{StaticResource CircularProgressBarStyle}" Value="{Binding ElementName=ProgressSlider, Path=Value}" />
<ProgressBar IsIndeterminate="{Binding ElementName=ProgressCheckbox, Path=IsChecked}" Style="{StaticResource CircularProgressBarStyle}" />
</UniformGrid>
</StackPanel>
<ms:WrapPanel Margin="30">
<!-- 水平步骤条 -->
<ms:StepBar Orientation="Horizontal">
<ms:StepBarItem Content="项目创建" />
<ms:StepBarItem Content="环境配置" />
<ms:StepBarItem Content="代码编写" />
<ms:StepBarItem Content="发布部署" />
</ms:StepBar>
<!-- 垂直步骤条 -->
<ms:StepBar HorizontalAlignment="Left" Orientation="Vertical">
<ms:StepBarItem Content="Step 1: 登录账户" />
<ms:StepBarItem Content="Step 2: 验证身份" />
<ms:StepBarItem Content="Step 3: 绑定手机" />
</ms:StepBar>
<Button
x:Name="TargetButton"
HorizontalAlignment="Center"
Content="开始教程" />
<Button
x:Name="StartBtn"
Click="StartBtn_Click"
Content="开始" />
</ms:WrapPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="文件、文件夹 Browser">
<UniformGrid Rows="1">
<ms:UploadArea
Margin="5"
Accept="Image Files|*.jpg;*.jpeg;*.png;*.gif"
HintText="点击选择单个图片"
Mode="FilesOnly" />
<ms:UploadArea
Margin="5"
HintText="点击选择一个项目文件夹"
Mode="FoldersOnly" />
<ms:UploadArea
Margin="5"
Accept="Document Files|*.doc;*.docx;*.pdf|All Files|*.*"
HintText="点击或拖拽多个文档到此"
Mode="FilesOnly"
Multiple="True" />
<ms:UploadArea
Margin="5"
HintText="点击或拖拽多个文件夹到此"
Mode="FoldersOnly"
Multiple="True" />
</UniformGrid>
</StackPanel>
<ms:FlexibleRowPanel ms:ControlAssist.AnchorHeaderText="时间日期 DataPicker" LayoutMode="Auto">
<DatePicker VerticalAlignment="Center" />
<Calendar Margin="5">
<Calendar.BlackoutDates>
<CalendarDateRange End="2022/7/12" Start="2022/7/10" />
</Calendar.BlackoutDates>
</Calendar>
<Calendar Margin="5" IsEnabled="False">
<Calendar.BlackoutDates>
<CalendarDateRange End="2025/7/12" Start="2025/7/10" />
</Calendar.BlackoutDates>
</Calendar>
<StackPanel VerticalAlignment="Center">
<ms:TimePicker ClockIdentifier="Clock12Hour" Header="TimerPicker" />
<ms:TimePicker />
</StackPanel>
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel ms:ControlAssist.AnchorHeaderText="颜色拾取 ColorPicker">
<!--<neu:ColorPickerControl />-->
<ms:ColorPanel />
<ms:ColorPicker Margin="10" SelectedColor="Black" />
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel ms:ControlAssist.AnchorHeaderText="树形结构 TreeView">
<TreeView Margin="4">
<TreeViewItem Header="A123" IsExpanded="True">
<TreeViewItem Header="B123" IsExpanded="True">
<TreeViewItem Header="C123" />
</TreeViewItem>
<TreeViewItem Header="B456" IsEnabled="False" />
</TreeViewItem>
</TreeView>
<ms:MultiTreeView>
<ms:MultiTreeViewItem Header="Item1">
<ms:MultiTreeViewItem Header="Item1">
<ms:MultiTreeViewItem Header="Item1" />
<ms:MultiTreeViewItem Header="Item1" />
</ms:MultiTreeViewItem>
<ms:MultiTreeViewItem Header="Item1" />
</ms:MultiTreeViewItem>
<ms:MultiTreeViewItem Header="Item1" />
<ms:MultiTreeViewItem Header="Item1" />
</ms:MultiTreeView>
<ms:MultiTreeView ItemsSource="{Binding Nodes}" SelectedItems="{Binding SelectedNodes}">
<ms:MultiTreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</ms:MultiTreeView.ItemTemplate>
</ms:MultiTreeView>
</ms:FlexibleRowPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="列表框 ListBox">
<ms:FlexibleRowPanel>
<ListBox Margin="4">
<ListBoxItem>SyminOmega</ListBoxItem>
<ListBoxItem>Celeron533</ListBoxItem>
<ListBoxItem>Hello World</ListBoxItem>
<ListBoxItem>Furry Fantasy</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
</ListBox>
<ListBox
Margin="4"
ms:ControlAssist.IsFlowLayout="True"
SelectionMode="Multiple">
<ListBoxItem IsSelected="True">SyminOmega</ListBoxItem>
<ListBoxItem IsSelected="True">Celeron533</ListBoxItem>
<ListBoxItem>Hello World</ListBoxItem>
<ListBoxItem>Furry Fantasy</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
</ListBox>
<ListBox
Margin="4"
SelectionMode="Multiple"
Style="{StaticResource ChipListBoxStyle}">
<ListBoxItem IsSelected="True">SyminOmega</ListBoxItem>
<ListBoxItem IsSelected="True">Celeron533</ListBoxItem>
<ListBoxItem>Hello World</ListBoxItem>
<ListBoxItem>Furry Fantasy</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
<ListBoxItem>Item Demo</ListBoxItem>
</ListBox>
<ListView
Margin="4"
DataContext="{StaticResource Dgd}"
ItemsSource="{Binding DataCollection}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Id}" Header="ID" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
<GridViewColumn DisplayMemberBinding="{Binding Age}" Header="Age" />
<GridViewColumn DisplayMemberBinding="{Binding Mark}" Header="Mark" />
<GridViewColumn DisplayMemberBinding="{Binding Gender}" Header="Gender" />
</GridView>
</ListView.View>
</ListView>
</ms:FlexibleRowPanel>
<ms:FlexibleRowPanel LayoutMode="Auto" Spacing="20">
<UniformGrid Columns="3">
<ListBox
HorizontalAlignment="Center"
VerticalAlignment="Center"
SelectedIndex="1"
Style="{StaticResource TabGroupListBoxStyle}">
<ListBoxItem Content="Home" />
<ListBoxItem Content="Away" />
<ListBoxItem Content="Night" />
</ListBox>
</UniformGrid>
</ms:FlexibleRowPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="数据展示 TabControl">
<WrapPanel>
<TabControl>
<TabItem Header="选项卡 1">
<Grid Margin="4">
<!-- <Separator /> -->
<DataGrid
Margin="4"
DataContext="{StaticResource Dgd}"
ItemsSource="{Binding DataCollection}" />
</Grid>
</TabItem>
<TabItem Header="选项卡 2" />
<TabItem Header="禁用选项卡" IsEnabled="False" />
</TabControl>
<TabControl Style="{StaticResource FlattenTabControlStyle}" TabStripPlacement="Top">
<TabItem Header="选项卡 1">
<StackPanel Margin="4">
<ms:NeuDataGrid
x:Name="NeuDG1"
Margin="4"
BindableSelectedItems="{Binding SelectedDataGridItems, Mode=TwoWay}"
CanUserAddRows="False"
DataContext="{StaticResource Dgd}"
ItemsSource="{Binding DataCollection}" />
<Button
VerticalAlignment="Center"
Command="{Binding ShowSelectedItemsCommand}"
Content="显示选中项"
DataContext="{StaticResource Dgd}" />
</StackPanel>
</TabItem>
<TabItem Header="选项卡 2" />
<TabItem Header="禁用选项卡" IsEnabled="False" />
</TabControl>
<ms:NeuDataGrid
x:Name="NeuDG2"
Margin="5"
HorizontalAlignment="Left"
d:ItemsSource="{d:SampleData ItemCount=5}"
BindableSelectedItems="{Binding SelectedDataItems, Mode=TwoWay}"
ItemsSource="{Binding DataItems}"
ToolTip="双击展开详情">
<!-- RowDetailsVisibilityMode="VisibleWhenSelected" -->
<!-- 展开详情 -->
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding ToggleDetailsCommand}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ms:NeuDataGrid.RowStyle>
<Style BasedOn="{StaticResource DefaultDataGridRowStyle}" TargetType="{x:Type DataGridRow}">
<Setter Property="DetailsVisibility" Value="{Binding IsDetailsVisible, Converter={x:Static ms:BooleanToVisibilityConverter.CollapsedInstance}, Mode=TwoWay}" />
</Style>
</ms:NeuDataGrid.RowStyle>
<ms:NeuDataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel Margin="10">
<TextBlock FontWeight="Bold" Text="详细信息:" />
<StackPanel Margin="10,5,0,0" Orientation="Horizontal">
<TextBlock Text="姓名: " />
<TextBlock Text="{Binding Name}" />
</StackPanel>
<StackPanel Margin="10,5,0,0" Orientation="Horizontal">
<TextBlock Text="年龄: " />
<TextBlock Text="{Binding Age}" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ms:NeuDataGrid.RowDetailsTemplate>
<ms:NeuDataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" />
<DataGridTextColumn Binding="{Binding Age}" Header="Age" />
</ms:NeuDataGrid.Columns>
</ms:NeuDataGrid>
<StackPanel>
<ms:TreeGrid
Margin="5"
d:ItemsSource="{d:SampleData ItemCount=5}"
ItemsSource="{Binding HierarchicalData}">
<ms:TreeGrid.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type test:TreeNodeItem}" ItemsSource="{Binding Children}">
<!-- 使用 GridViewRowPresenter 来确保内容与表头列对齐 -->
<!-- Columns 属性必须绑定到 TreeGrid 的 Columns 集合 -->
<GridViewRowPresenter Columns="{Binding Columns, RelativeSource={RelativeSource AncestorType={x:Type ms:TreeGrid}}}" Content="{Binding}" />
</HierarchicalDataTemplate>
</ms:TreeGrid.ItemTemplate>
<!-- 直接定义 GridViewColumn 集合,就像使用 ListView 一样 -->
<ms:TreeGrid.Columns>
<!-- 第一列使用 CellTemplate 来手动添加展开按钮和内容 -->
<GridViewColumn Header="任务名">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type test:TreeNodeItem}">
<StackPanel Orientation="Horizontal">
<!-- TreeViewItem 的默认模板会提供缩进和展开按钮,我们只需要显示内容即可 -->
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Owner}" Header="安排" />
<GridViewColumn DisplayMemberBinding="{Binding Status}" Header="状态" />
</ms:TreeGrid.Columns>
</ms:TreeGrid>
<Button
Margin="10"
VerticalAlignment="Center"
Command="{Binding ShowSelectedItemsCommand}"
Content="查看选中项" />
</StackPanel>
<ms:Accordion Width="200" BorderThickness="1">
<ms:AccordionItem Header="User Profile" IsExpanded="True">
<StackPanel Margin="10">
<TextBlock Text="Name: John Doe" />
<TextBlock Text="Email: john.doe@example.com" />
</StackPanel>
</ms:AccordionItem>
<ms:AccordionItem Header="User Profile">
<StackPanel Margin="10">
<TextBlock Text="Name: John Doe" />
<TextBlock Text="Email: john.doe@example.com" />
</StackPanel>
</ms:AccordionItem>
<ms:AccordionItem Header="User Profile">
<StackPanel Margin="10">
<TextBlock Text="Name: John Doe" />
<TextBlock Text="Email: john.doe@example.com" />
</StackPanel>
</ms:AccordionItem>
<ms:AccordionItem Header="Application Settings">
<StackPanel>
<CheckBox Content="Enable Dark Mode" />
<CheckBox Content="Auto-save every 5 minutes" />
</StackPanel>
</ms:AccordionItem>
<ms:AccordionItem Header="Help &amp; Support">
<TextBlock
Margin="10"
Text="For support, please visit our website."
TextWrapping="Wrap" />
</ms:AccordionItem>
</ms:Accordion>
<ms:Accordion
Margin="10,0,0,0"
d:ItemsSource="{d:SampleData ItemCount=5}"
ItemsSource="{Binding Items}">
<ms:Accordion.ItemContainerStyle>
<Style BasedOn="{StaticResource AccordionItemStyle}" TargetType="{x:Type ms:AccordionItem}">
<Setter Property="Header" Value="{Binding Label}" />
<Setter Property="Content">
<Setter.Value>
<TextBlock
Margin="10"
Text="{Binding Value}"
TextWrapping="Wrap" />
</Setter.Value>
</Setter>
</Style>
</ms:Accordion.ItemContainerStyle>
</ms:Accordion>
<!-- 显示分页后的数据 -->
<ms:Pagination
Margin="0,15,0,0"
HorizontalAlignment="Center"
CurrentPage="{Binding CurrentPage, Mode=TwoWay}"
DataContext="{StaticResource MainViewModel}"
PageSize="{Binding PageSize, Mode=TwoWay}"
ShowPageInput="True"
TotalItems="{Binding TotalItems}" />
</WrapPanel>
</StackPanel>
<StackPanel ms:ControlAssist.AnchorHeaderText="其他 Others">
<ms:Breadcrumb Navigate="Breadcrumb_Navigate">
<ms:BreadcrumbItem
Content="Item1"
Href="Item1"
ToolTip="Item 3 Href属性为空将禁用" />
<ms:BreadcrumbItem
Content="Item2"
Href="Item2"
ToolTip="Item 3 Href属性为空将禁用" />
<ms:BreadcrumbItem Content="Item3" />
</ms:Breadcrumb>
</StackPanel>
</ms:StackPanel>
</ms:Anchor>
<!-- WPF 的路由事件会自动向上冒泡。因为 TutorialGuide 的 Next 事件是 Bubble 类型,你可以在 UI 层的任何祖先控件上拦截它。 -->
<ms:TutorialLayer
x:Name="MyTutorial"
ms:TutorialGuide.Back="MyTutorial_Back"
ms:TutorialGuide.Close="MyTutorial_Close"
ms:TutorialGuide.Next="MyTutorial_Next" />
<!-- 状态栏部分 -->
<StatusBar Grid.Row="2">
<TextBlock Text="★" />
<TextBlock Text="状态栏" />
<Separator />
<TextBlock x:Name="TextMessage" Text="消息" />
</StatusBar>
</Grid>
</ms:MelWindow>