wpf下拉框 绑定怎么让他默认有选中项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf下拉框 绑定怎么让他默认有选中项相关的知识,希望对你有一定的参考价值。
一开始的时候,设置SelectedIndex = xxx
或者设置SelectedItem = xxx
如果你的数据源是在加载后动态绑定上的,建议自己做一个附加属性来实现。例如:
public static class ItemsControlHelper/// <summary>
/// AutoSelectedIndex Attached Dependency Property
/// </summary>
public static readonly DependencyProperty AutoSelectedIndexProperty =
DependencyProperty.RegisterAttached("AutoSelectedIndex", typeof(int), typeof(ItemsControlHelper),
new FrameworkPropertyMetadata(-1,
new PropertyChangedCallback(OnAutoSelectedIndexChanged)));
/// <summary>
/// Gets the AutoSelectedIndex property. This dependency property
/// indicates ....
/// </summary>
public static int GetAutoSelectedIndex(Selector d)
return (int)d.GetValue(AutoSelectedIndexProperty);
/// <summary>
/// Sets the AutoSelectedIndex property. This dependency property
/// indicates ....
/// </summary>
public static void SetAutoSelectedIndex(Selector d, int value)
d.SetValue(AutoSelectedIndexProperty, value);
/// <summary>
/// Handles changes to the AutoSelectedIndex property.
/// </summary>
private static void OnAutoSelectedIndexChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
var selector = d as Selector;
if (selector == null)
return;
var index = (int)e.NewValue;
if (index > -1)
selector.ItemContainerGenerator.ItemsChanged += OnItemsChanged;
else
selector.ItemContainerGenerator.ItemsChanged -= OnItemsChanged;
private static void OnItemsChanged(object sender, ItemsChangedEventArgs e)
var selector = sender.ReflectGetProperty<Selector>("Host");
if (selector == null)
return;
var index = GetAutoSelectedIndex(selector);
if (index > -1 && index < selector.Items.Count)
// 不直接设置SelectedIndex,因为index有可能与上一次的相同,导致不会选中
// 需要使用对应的item去设置
var item = selector.Items[index];
selector.SelectedItem = item;
上面的代码用了自己写的一个库,ReflectGetProperty这个你自己用反射实现一下吧。
使用的时候
<ComboBox 命名空间:ItemsControlHelper.AutoSelectedIndex="3"/> 参考技术A绑定SelectedItem属性,如果需要后台修改当前选择属性,LstSelect需要使用依赖属性或者继承INotifyPropertyChanged消息接口。
关于数据绑定,可以查看博文:http://blog.csdn.net/rabbitsoft_1987/article/details/19297073
public partial class MainWindow : Windowpublic List<String> LstSource get; set;
public string LstSelect get; set;
public MainWindow()
InitializeComponent();
LstSource = new List<string>() "Name1", "Name2", "Name3" ;
LstSelect = "Name2";
this.DataContext = this;
xaml
<ComboBox HorizontalAlignment="Left" Height="38" Margin="63,160,0,0" VerticalAlignment="Top" Width="155"ItemsSource="Binding LstSource"
SelectedItem="Binding LstSelect"/>本回答被提问者和网友采纳
45、vue select下拉框绑定默认值
参考技术A vue select下拉框绑定默认值:首先option要加value值,以便v-model可以获取到对应选择的值
一、当没有绑定v-model,直接给对应的option加selected属性
二、当给select绑定了v-model的值的时候,要给v-model绑定的data值里写默认值
以上是关于wpf下拉框 绑定怎么让他默认有选中项的主要内容,如果未能解决你的问题,请参考以下文章