- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我确实在数据绑定(bind)和 MVVM 方法论方面苦苦挣扎,尽管我喜欢这个概念,但我只是在苦苦挣扎。我为它创建了一个 WPF,它有多个组合框和一个按钮。第一个组合框将列出数据库实例名称。单击按钮后将填充剩余的组合框。由于我对第一个数据库实例、组合框有问题,因此我将只显示我的代码。当应用程序启动时,组合框被加载并且第一个项目被选中,正如预期的那样。问题是当我选择一个新名称时,我希望调用的方法没有。有人可以帮助我理解为什么我的方法 public DBInstance SelectedDBInstance
在我的 XAML 中有这个时没有被执行,SelectedValue="{Binding SelectedDBInstance, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}
?
这是我的数据库实例组合框的 XAML。我在这里遇到的一个问题是“值”fpr SelectedValuePath,如果我将它更改为“DBInstanceName”,它就不起作用。
<ComboBox x:Name="cbxRLFDBInstances" ItemsSource="{Binding DBInstances}"
SelectedValue="{Binding SelectedDBInstance, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="value" DisplayMemberPath="DBInstanceName"/>
这是我的 ViewModel 代码:
namespace DatabaseTest.ViewModel
{
class RLFDatabaseTableViewModel : INotifyPropertyChanged
{
Utilities dbtUtilities = new Utilities();
public RelayCommand LoadDBInfoCommand
{
get;
set;
}
public RLFDatabaseTableViewModel()
{
LoadDBInstances();
LoadDBInfoCommand = new RelayCommand(LoadDBInfo);
}
public ObservableCollection<DBInstance> DBInstances
{
get;
set;
}
public void LoadDBInstances()
{
ObservableCollection<DBInstance> dbInstances = new ObservableCollection<DBInstance>();
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
dbInstances.Add(new DBInstance { DBInstanceName = "fal-conversion\\mun2012ci" });
dbInstances.Add(new DBInstance { DBInstanceName = "fal-conversion\\mun2014ci" });
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
dbInstances.Add(new DBInstance { DBInstanceName = dr["Name"].ToString() });
}
}
DBInstances = dbInstances;
}
private DBInstance _selectedDBInstance;
public DBInstance SelectedDBInstance
{
get
{
return _selectedDBInstance;
}
set
{
_selectedDBInstance = value;
RaisePropertyChanged("SelectedDBInstance");
//ClearComboBoxes();
}
}
}
}
这是我的模型代码。当我单步执行代码时,此方法 public string DBInstanceName
会执行多次。我不知道为什么,这对我来说似乎很浪费。
namespace DatabaseTest.Model
{
public class RLFDatabaseTableModel { }
public class DBInstance : INotifyPropertyChanged
{
private string strDBInstance;
public override string ToString()
{
return strDBInstance;
}
public string DBInstanceName
{
get
{
return strDBInstance;
}
set
{
if (strDBInstance != value)
{
strDBInstance = value;
RaisePropertyChanged("DBInstanceName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
最佳答案
您应该将 ComboBox
的 SelectedItem
属性绑定(bind)到 SelectedDBInstance
属性并去掉 SelectedValuePath
:
<ComboBox x:Name="cbxRLFDBInstances" ItemsSource="{Binding DBInstances}"
SelectedItem="{Binding SelectedDBInstance, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="DBInstanceName"/>
SelectedValuePath
属性仅在您想要绑定(bind)到与 ItemsSource
集合中的项目类型不同的源属性时使用。
要最初选择一个项目,您应该将 SelectedDBInstance
属性设置为存在于 DBInstances
集合中的项目:
public RLFDatabaseTableViewModel()
{
LoadDBInstances();
LoadDBInfoCommand = new RelayCommand(LoadDBInfo);
SelectedDBInstance = DBInstances[0]; //selected the first item
}
关于c# - WPF Combobox 绑定(bind)和 SelectedValue 与 SelectedValuePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009152/
在我们的应用程序中,我们有一个非常大的数据集,用作 ComboBox 列表等的数据字典。这些数据是静态缓存的,并与 2 个变量绑定(bind),所以我认为编写一个派生自的控件是明智的ComboBox
我正在尝试将 Dictionary 绑定(bind)到 WPF 应用程序中的 ComboBox。 SortedDictionary result = new SortedDictionary(); (
以下之间有什么区别: SelectedItem SelectedValue SelectedValuePath 所有这些依赖属性都在 Selector 中定义。类(class)。我经常将 Select
如何使用 Linq To Sql 将值和键绑定(bind)到列表框? 我正在使用 linq to sql 类填充列表框,这是 WPF: 下面显示了 FullName 而不是 Case_Number:
我正在努力寻找为什么我的 SelectedValuePath 没有导致我的组合框将 double 值传递到我的 View 模型属性 DelayLength。当我在执行期间更改组合框选择时,组合框变为红
我一直在努力解决这些组合框属性 显示成员路径 选定值 选定的值路径 我正在构建一个主详细信息表单。 组合框中充满了客户 用户在组合中选择客户 所有文本框 EG 均正确填写 我遇到的问题我已经让它工作了
我确实在数据绑定(bind)和 MVVM 方法论方面苦苦挣扎,尽管我喜欢这个概念,但我只是在苦苦挣扎。我为它创建了一个 WPF,它有多个组合框和一个按钮。第一个组合框将列出数据库实例名称。单击按钮后将
调试一个奇怪的 NullRefException 我看到下图: 所以当代码指的是.SelectedValue它崩溃了。 我无法理解 .SelectedItem可以设置,但是.SelectedValue
我是一名优秀的程序员,十分优秀!