自定义选择器 C# UWP 上的多项选择
Posted
技术标签:
【中文标题】自定义选择器 C# UWP 上的多项选择【英文标题】:multiple selection on custom picker C# UWP 【发布时间】:2018-04-20 06:33:25 【问题描述】:我一直在论坛和互联网上查找有关 C# 上的自定义选择器的信息,我有一个已经可以使用的选择器,但我的一些研究告诉我,您只能选择自定义选择器的一项,这是我用来部署选择器的代码。
选择器
<custom:CustomPicker x:Name="pickerCategories" ItemsSource="Binding listCategoriesName" SelectedIndex="Binding SelectedCategory" SelectedIndexChanged="pickerCategories_SelectedIndexChanged" Grid.Column="1" BackgroundColor="White"/>
项目来源作为数据库中的对象列表提供给选择器 有没有办法能够选择自定义选择器的多个索引? 例如...
Picker pk = new Picker(); pk.SelectionMode=Multiple;
【问题讨论】:
【参考方案1】:根据您的要求,您可以在本机 uwp 项目中制作自定义 Picker
渲染器。然后创建一个新的DataTemplate
用于在本机控件中显示包含复选框的ComboBox
项。
<DataTemplate x:Key="templateEmployee" >
<StackPanel Orientation="Horizontal">
<CheckBox Content="Binding Content,Mode=TwoWay" IsChecked="Binding IsCheck,Mode=TwoWay" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</StackPanel>
</DataTemplate>
对于CustomPickerRenderer
,您应该将表单Picker
项目源传递给本机控件(组合框)。当组合框下拉关闭时,您可以执行InvokeAction
方法将Data
发送到表单Picker
。
public class CustomPickerRenderer : PickerRenderer
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
base.OnElementChanged(e);
Control.ItemsSource = e.NewElement.ItemsSource;
Control.ItemTemplate = (Windows.UI.Xaml.DataTemplate)App.Current.Resources["templateEmployee"];
Control.DropDownClosed += Control_DropDownClosed;
private void Control_DropDownClosed(object sender, object e)
var NewElement = Element as CustomPicker;
var items = (sender as ComboBox).ItemsSource;
NewElement.InvokeAction(items);
用法
public MainPage()
InitializeComponent();
MyPicker.ItemsSource = new MainViewModel().itemSource;
MyPicker.RegisterAction(IsCheckItems);
private List<Item> SelecItms = new List<Item>();
private void IsCheckItems(object data)
var items = data as ObservableCollection<Item>;
var str = new StringBuilder();
foreach (var item in items)
if (item.IsCheck)
SelecItms.Add(item);
str.AppendLine(item.Content);
SeleitemLabel.Text = str.ToString();
我已经上传了code sample。请检查。
【讨论】:
它真的很有用,我能够解决我的问题! 如果您使用 UWP PickerRenderer ...并且您更改了 CustomPicker 所在的布局,...那么您的 UWP 应用程序将崩溃。在这个 UWP 废话从我脚下拉开地毯之前浪费了五个星期。请注意。以上是关于自定义选择器 C# UWP 上的多项选择的主要内容,如果未能解决你的问题,请参考以下文章
UWP 颜色选择器(ColorPicker) 和 自定义的Flyout(AdvancedFlyout)