c# wpf 自定义可伸缩瓦片状多选控件
一、效果图
二、代码
1、ListBox做架构主界面
1.1 xaml
<UserControl x:Class="YZ.HIS.UserControls.TelescopicMultiSelector.TelescopicMultiSelector"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:YZ.HIS.UserControls.TelescopicMultiSelector"
mc:Ignorable="d" >
<StackPanel Margin="4" x:Name="outPanel">
<DockPanel>
<Border Margin="4" Padding="4" x:Name="tip">
<TextBlock x:Name="textBlock">(多选)</TextBlock>
</Border>
<ListBox ItemsSource="{Binding DataList1}" x:Name="ListBoxFirst">
<ListBox.Template>
<ControlTemplate>
<StackPanel IsItemsHost="True" Orientation="Horizontal"/>
</ControlTemplate>
</ListBox.Template>
</ListBox>
<Border Margin="4" Padding="4" HorizontalAlignment="Right">
<Button x:Name="button" Style="{
DynamicResource btnText}" Click="Button_Click" Cursor="Hand">
<Button.Template>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="btnTB" Text="{Binding BtnText}"></TextBlock>
<Image Source="{Binding BtnImg}" Width="16" Height="16"></Image>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
</Border>
</DockPanel>
<ListBox ItemsSource="{Binding DataList2}" Visibility="Collapsed" x:Name="ListBoxSec">
<ListBox.Template>
<ControlTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal"></WrapPanel>
</ControlTemplate>
</ListBox.Template>
</ListBox>
</StackPanel>
</UserControl>
2.2 cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;