【发布时间】:2012-07-30 21:36:33
【问题描述】:
很抱歉问这个问题,但我真的是 WPF 的新手,我搜索了几个小时试图找出这个问题的问题。
给定以下代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Data> _Buffer = new List<Data>();
for (int i = 0; i < 50; i++)
{
_Buffer.Add(new Data(i, i.ToString()));
}
//Also tried:
//comboBox1.DataContext = _Buffer.ToArray();
comboBox1.ItemsSource = _Buffer.ToArray();
comboBox1.SelectedValuePath = "Val";
comboBox1.DisplayMemberPath = "ValName";
comboBox1.UpdateLayout();
comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
}
void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show(((Data)e.AddedItems[0]).ValName);
}
struct Data
{
public Data(int Val, string ValName)
{
this.Val = Val;
this.ValName = ValName;
}
public readonly int Val;
public readonly string ValName;
}
}
我猜想将一个简单数组绑定到一个组合是非常容易的,实际上它是,除了一个小问题,它在组合列表中没有显示任何内容。
XAML:
<ComboBox Height="23" HorizontalAlignment="Left" Margin="109,82,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" ItemsSource="{Binding}" />
正确的做法是什么?
【问题讨论】:
-
嗨,您正在对 ComboBox 进行两次绑定,根据您的情况,这可能会影响:擦除 XAML 中的绑定
-
你好 Dante,我摆脱了 ItemsSource="{Binding}" 但它一直在做同样的事情 =( ...实际上,组合“有” Data 对象,但它不显示关联的文本
-
您是否尝试过将 Val 和 ValName 设为属性?
public int Val { get; private set; } -
天啊!这是正确的!!!我按属性进行了更改,现在显示正常...但是,为什么??!!!它应该是这样的吗?
标签: wpf binding combobox arraylist