WPF -Combobox -Bindung und SelectedValue mit SelectedValuePathC#

Ein Treffpunkt für C#-Programmierer
Guest
 WPF -Combobox -Bindung und SelectedValue mit SelectedValuePath

Post by Guest »

Ich habe wirklich Probleme mit der Datenbindung und der MVVM -Methodik, obwohl ich das Konzept mag, dass ich nur zu kämpfen habe. Ich habe ein WPF -Formular erstellt, das mehrere Comboboxes und einen Knopf enthält. In der ersten Combobox werden Datenbankinstanznamen aufgeführt. Die verbleibenden Comboboxen werden nach dem Klicken der Schaltfläche besiedelt. Da ich Probleme mit dem ersten, Datenbankinstanzen habe, Combobox Ich werde meinen Code nur dafür zeigen. Wenn die Anwendung startet, wird der Combobox geladen und das erste Element wie erwartet ausgewählt. Das Problem ist, wenn ich einen neuen Namen ausgewählt habe, den ich angerufen habe, was nicht. Kann mir jemand helfen zu verstehen, warum meine Methode public dbinstance selectedDBinStance nicht ausgeführt wird, wenn ich dies in meinem XAML habe, SelectedValue = "{Bindung SelectedDBinstance, Modus = Twoway, UpdateSourcetriber = PropertyChanged} ? ? ?
Hier ist mein XAML für die Datenbankinstanzen Combobox.

Code: Select all

 
< /code>
Hier ist mein ViewModel -Code: < /p>
namespace DatabaseTest.ViewModel
{

class RLFDatabaseTableViewModel : INotifyPropertyChanged
{
Utilities dbtUtilities = new Utilities();

public RelayCommand LoadDBInfoCommand
{
get;
set;
}

public RLFDatabaseTableViewModel()
{
LoadDBInstances();

LoadDBInfoCommand = new RelayCommand(LoadDBInfo);
}

public ObservableCollection DBInstances
{
get;
set;
}

public void LoadDBInstances()
{
ObservableCollection dbInstances = new ObservableCollection();
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();

}
}
}
}
< /code>
Hier ist mein Modellcode.  Wenn ich diese Methode durch den Code durchtrage, wird der öffentliche String dbinStaConName 
mehrmals ausgeführt. Ich weiß nicht warum und es scheint mir verschwenderisch zu sein. < /P>

Code: Select all

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));
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post