Joh*_*hnB 5 c# wpf xaml combobox
我在XAML中绑定WPF ComboBox时遇到问题。
这是我的对象定义和集合:
public class AccountManager
{
public long UserCode { get; set; }
public string UserName { get; set; }
}
public partial class MainWindow : Window
{
public List<AccountManager> AccountManagers;
}
Run Code Online (Sandbox Code Playgroud)
这是我的ComboBox的XAML定义:
ComboBox Name="cbTestAccountManagers"
ItemsSource="{Binding AccountManagers}"
DisplayMemberPath="UserName"
SelectedValuePath="UserCode"
Width="250"
Run Code Online (Sandbox Code Playgroud)
我不太确定自己在做什么错。我在运行/加载时没有任何错误。组合框显示,下拉菜单中没有任何内容。(它是空的)。
有人可以指出我正确的方向吗?
谢谢
小智 5
你的问题很简单。改变
public List<AccountManager> AccountManagers;
Run Code Online (Sandbox Code Playgroud)
对此
public List<AccountManager> AccountManagers { get; set; }
Run Code Online (Sandbox Code Playgroud)
并确保您的 MainWindow 构造函数中有这些
public MainWindow()
{
InitializeComponent();
//Setup Account managers here
DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
您只能绑定到属性而不是字段,并且您需要确保正确的数据上下文
你犯了几个错误
首先你没有遵循MVVM
正确的 MVVM 应该如下所示
public class AccountManager
{
public long UserCode { get; set; }
public string UserName { get; set; }
}
public class AccountManagersVM
{
public ObservableCollection<AccountManager> AccountManagers{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
那么不需要更改后面的代码,只需使用可以直接设置或通过绑定设置的 DataContext
<Window.DataContext>
<local:AccountManagersVM />
</Window.DataContext>
ComboBox ItemsSource="{Binding AccountManagers}"
DisplayMemberPath="UserName"
SelectedValuePath="UserCode"
Width="250"
Run Code Online (Sandbox Code Playgroud)
第二个属性/字段不能仅绑定属性
例如public long UserCode { get; set; }
会起作用但public long UserCode;
不会
归档时间: |
|
查看次数: |
6919 次 |
最近记录: |