Replace AutoCompleteBox demo data with ControlData

Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-09-19 10:23:11 +00:00
parent 130c4f7f14
commit 75d5e86877
5 changed files with 85 additions and 88 deletions

View File

@@ -0,0 +1,7 @@
namespace Ursa.Demo.Models;
public class ControlData
{
public required string MenuHeader { get; init; }
public required string Chinese { get; init; }
}

View File

@@ -3,6 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:Ursa.Demo.ViewModels"
xmlns:models="clr-namespace:Ursa.Demo.Models"
xmlns:u="https://irihi.tech/ursa"
x:DataType="viewModels:AutoCompleteBoxDemoViewModel"
mc:Ignorable="d" d:DesignWidth="800"
@@ -13,40 +14,43 @@
<Style Selector="u|AutoCompleteBox">
<Setter Property="Width" Value="300" />
<Setter Property="ItemsSource">
<Binding Path="States" />
<Binding Path="Controls" />
</Setter>
<Setter Property="ItemTemplate">
<DataTemplate DataType="viewModels:StateData">
<TextBlock Text="{Binding Name}" />
<DataTemplate DataType="models:ControlData">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding MenuHeader}" VerticalAlignment="Center"/>
<TextBlock Text="{Binding Chinese}" Classes="Secondary" FontSize="12" Margin="8 0 0 0" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Setter>
</Style>
</StackPanel.Styles>
<TextBlock Text="{Binding #box.((viewModels:StateData)SelectedItem).Name}" />
<TextBlock Text="{Binding #box.((models:ControlData)SelectedItem).MenuHeader}" />
<u:AutoCompleteBox
Name="box"
Watermark="Please select a State"
Watermark="Please select a Control"
Classes="ClearButton"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
<u:AutoCompleteBox
Classes="Large"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
<u:AutoCompleteBox
Classes="Small"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
<u:AutoCompleteBox
Classes="Bordered"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
<u:AutoCompleteBox
IsEnabled="False"
Watermark="Disabled"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
<u:AutoCompleteBox
InnerLeftContent="https://"
InnerRightContent=".com"
ValueMemberBinding="{ReflectionBinding Name}" />
ValueMemberBinding="{ReflectionBinding MenuHeader}" />
</StackPanel>
</UserControl>

View File

@@ -4,6 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
xmlns:vm="clr-namespace:Ursa.Demo.ViewModels"
xmlns:models="clr-namespace:Ursa.Demo.Models"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:DataType="vm:MultiAutoCompleteBoxDemoViewModel"
x:Class="Ursa.Demo.Pages.MultiAutoCompleteBoxDemo">
@@ -16,7 +17,7 @@
ItemFilter="{Binding FilterPredicate}"
FilterMode="Custom">
<u:MultiAutoCompleteBox.ItemTemplate>
<DataTemplate DataType="vm:ControlData">
<DataTemplate DataType="models:ControlData">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding MenuHeader}" VerticalAlignment="Center"/>
<TextBlock Text="{Binding Chinese}" Classes="Secondary" FontSize="12" Margin="8 0 0 0" VerticalAlignment="Center"/>
@@ -24,7 +25,7 @@
</DataTemplate>
</u:MultiAutoCompleteBox.ItemTemplate>
<u:MultiAutoCompleteBox.SelectedItemTemplate>
<DataTemplate DataType="vm:ControlData">
<DataTemplate DataType="models:ControlData">
<TextBlock Text="{Binding MenuHeader}" />
</DataTemplate>
</u:MultiAutoCompleteBox.SelectedItemTemplate>

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using Ursa.Demo.Models;
namespace Ursa.Demo.ViewModels;
@@ -8,79 +8,69 @@ public class AutoCompleteBoxDemoViewModel : ObservableObject
{
public AutoCompleteBoxDemoViewModel()
{
States = new ObservableCollection<StateData>(GetStates());
Controls = new ObservableCollection<ControlData>(GetControlData());
}
public ObservableCollection<StateData> States { get; set; }
public ObservableCollection<ControlData> Controls { get; set; }
private static List<StateData> GetStates()
private static ControlData[] GetControlData()
{
return new List<StateData>
return new ControlData[]
{
new("Alabama", "AL", "Montgomery"),
new("Alaska", "AK", "Juneau"),
new("Arizona", "AZ", "Phoenix"),
new("Arkansas", "AR", "Little Rock"),
new("California", "CA", "Sacramento"),
new("Colorado", "CO", "Denver"),
new("Connecticut", "CT", "Hartford"),
new("Delaware", "DE", "Dover"),
new("Florida", "FL", "Tallahassee"),
new("Georgia", "GA", "Atlanta"),
new("Hawaii", "HI", "Honolulu"),
new("Idaho", "ID", "Boise"),
new("Illinois", "IL", "Springfield"),
new("Indiana", "IN", "Indianapolis"),
new("Iowa", "IA", "Des Moines"),
new("Kansas", "KS", "Topeka"),
new("Kentucky", "KY", "Frankfort"),
new("Louisiana", "LA", "Baton Rouge"),
new("Maine", "ME", "Augusta"),
new("Maryland", "MD", "Annapolis"),
new("Massachusetts", "MA", "Boston"),
new("Michigan", "MI", "Lansing"),
new("Minnesota", "MN", "St. Paul"),
new("Mississippi", "MS", "Jackson"),
new("Missouri", "MO", "Jefferson City"),
new("Montana", "MT", "Helena"),
new("Nebraska", "NE", "Lincoln"),
new("Nevada", "NV", "Carson City"),
new("New Hampshire", "NH", "Concord"),
new("New Jersey", "NJ", "Trenton"),
new("New Mexico", "NM", "Santa Fe"),
new("New York", "NY", "Albany"),
new("North Carolina", "NC", "Raleigh"),
new("North Dakota", "ND", "Bismarck"),
new("Ohio", "OH", "Columbus"),
new("Oklahoma", "OK", "Oklahoma City"),
new("Oregon", "OR", "Salem"),
new("Pennsylvania", "PA", "Harrisburg"),
new("Rhode Island", "RI", "Providence"),
new("South Carolina", "SC", "Columbia"),
new("South Dakota", "SD", "Pierre"),
new("Tennessee", "TN", "Nashville"),
new("Texas", "TX", "Austin"),
new("Utah", "UT", "Salt Lake City"),
new("Vermont", "VT", "Montpelier"),
new("Virginia", "VA", "Richmond"),
new("Washington", "WA", "Olympia"),
new("West Virginia", "WV", "Charleston"),
new("Wisconsin", "WI", "Madison"),
new("Wyoming", "WY", "Cheyenne")
new() { MenuHeader = "Button Group", Chinese = "按钮组" },
new() { MenuHeader = "Icon Button", Chinese = "图标按钮" },
new() { MenuHeader = "AutoCompleteBox", Chinese = "自动完成框" },
new() { MenuHeader = "Class Input", Chinese = "类输入框" },
new() { MenuHeader = "Enum Selector", Chinese = "枚举选择器" },
new() { MenuHeader = "Form", Chinese = "表单" },
new() { MenuHeader = "KeyGestureInput", Chinese = "快捷键输入" },
new() { MenuHeader = "IPv4Box", Chinese = "IPv4输入框" },
new() { MenuHeader = "MultiComboBox", Chinese = "多选组合框" },
new() { MenuHeader = "Multi AutoCompleteBox", Chinese = "多项自动完成框" },
new() { MenuHeader = "Numeric UpDown", Chinese = "数字上下调节" },
new() { MenuHeader = "NumPad", Chinese = "数字键盘" },
new() { MenuHeader = "PathPicker", Chinese = "路径选择器" },
new() { MenuHeader = "PinCode", Chinese = "密码输入" },
new() { MenuHeader = "RangeSlider", Chinese = "范围滑块" },
new() { MenuHeader = "Rating", Chinese = "评分" },
new() { MenuHeader = "Selection List", Chinese = "选择列表" },
new() { MenuHeader = "TagInput", Chinese = "标签输入" },
new() { MenuHeader = "Theme Toggler", Chinese = "主题切换" },
new() { MenuHeader = "TreeComboBox", Chinese = "树形组合框" },
new() { MenuHeader = "Dialog", Chinese = "对话框" },
new() { MenuHeader = "Drawer", Chinese = "抽屉" },
new() { MenuHeader = "Loading", Chinese = "加载" },
new() { MenuHeader = "Message Box", Chinese = "消息框" },
new() { MenuHeader = "Notification", Chinese = "通知" },
new() { MenuHeader = "PopConfirm", Chinese = "气泡确认" },
new() { MenuHeader = "Toast", Chinese = "吐司" },
new() { MenuHeader = "Skeleton", Chinese = "骨架屏" },
new() { MenuHeader = "Date Picker", Chinese = "日期选择器" },
new() { MenuHeader = "Date Range Picker", Chinese = "日期范围选择器" },
new() { MenuHeader = "Date Time Picker", Chinese = "日期时间选择器" },
new() { MenuHeader = "Time Box", Chinese = "时间输入框" },
new() { MenuHeader = "Time Picker", Chinese = "时间选择器" },
new() { MenuHeader = "Time Range Picker", Chinese = "时间范围选择器" },
new() { MenuHeader = "Clock", Chinese = "时钟" },
new() { MenuHeader = "Anchor", Chinese = "锚点" },
new() { MenuHeader = "Breadcrumb", Chinese = "面包屑" },
new() { MenuHeader = "Nav Menu", Chinese = "导航菜单" },
new() { MenuHeader = "Pagination", Chinese = "分页" },
new() { MenuHeader = "ToolBar", Chinese = "工具栏" },
new() { MenuHeader = "AspectRatioLayout", Chinese = "宽高比布局" },
new() { MenuHeader = "Avatar", Chinese = "头像" },
new() { MenuHeader = "Badge", Chinese = "徽章" },
new() { MenuHeader = "Banner", Chinese = "横幅" },
new() { MenuHeader = "Disable Container", Chinese = "禁用容器" },
new() { MenuHeader = "Divider", Chinese = "分割线" },
new() { MenuHeader = "DualBadge", Chinese = "双徽章" },
new() { MenuHeader = "ImageViewer", Chinese = "图片查看器" },
new() { MenuHeader = "ElasticWrapPanel", Chinese = "弹性换行面板" },
new() { MenuHeader = "Marquee", Chinese = "跑马灯" },
new() { MenuHeader = "Number Displayer", Chinese = "数字显示器" },
new() { MenuHeader = "Scroll To", Chinese = "滚动到按钮" },
new() { MenuHeader = "Timeline", Chinese = "时间轴" },
new() { MenuHeader = "TwoTonePathIcon", Chinese = "双色路径图标" }
};
}
}
public class StateData
{
public StateData(string name, string abbreviation, string capital)
{
Name = name;
Abbreviation = abbreviation;
Capital = capital;
}
public string Name { get; private set; }
public string Abbreviation { get; private set; }
public string Capital { get; private set; }
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
using Ursa.Demo.Models;
namespace Ursa.Demo.ViewModels;
@@ -86,10 +87,4 @@ public class MultiAutoCompleteBoxDemoViewModel : ObservableObject
return control.MenuHeader.Contains(text, StringComparison.InvariantCultureIgnoreCase) ||
control.Chinese.Contains(text, StringComparison.InvariantCultureIgnoreCase);
}
}
public class ControlData
{
public required string MenuHeader { get; init; }
public required string Chinese { get; init; }
}