У меня нет комбинированного списка в wpf и я хочу связать его с атрибутом объекта.Моя проблема в том, что этот атрибут является базовым классом и может быть двух конкретных типов.
Это мои классы:
public abstract class Database
{
public DBTypes Type { get; set; }
public abstract void connect();
public abstract void disconnect();
public abstract void initDB();
public Database()
{
}
}
public class OracleDB : Database
{
public string Sid { get; set; }
public string User { get; set; }
public string Password { get; set; }
private OracleConnection m_dbConnection;
public OracleDB()
{
Type = DBTypes.ORACLE;
}
public OracleDB( string sid, string user, string passwd )
{
Sid = sid;
User = user;
Password = passwd;
}
.
.
.
}
public class SqliteDB : Database
{
public string DBFile { get; set; }
private SQLiteConnection m_dbConnection;
public SqliteDB()
{
DBFile = "database.db";
Type = DBTypes.SQLITE;
}
.
.
}
}
public enum DBTypes
{
ORACLE,
SQLITE
}
WPF часть:
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type System:Enum}" x:Key="EnumValues">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="lib:DBTypes" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
.
.
.
<ComboBox x:Name="DBTyp" Grid.Column="2" Grid.Row="0" HorizontalAlignment="Stretch"
VerticalAlignment="Center" SelectedIndex="0"
ItemsSource="{Binding Source={StaticResource EnumValues}}"
SelectedValue="{Binding Path=DbSettings.Type}"
SelectedItem="{Binding Path=DbSettings}">
</ComboBox>
DbSettings является атрибутом типа Database.
Так как же мне добиться, чтобы при выборе другой записи в выпадающем списке был выбран правильный объект?
С моим кодом я получаю
Cannot convert 'SQLITE' from type 'DBTypes' to type 'Database' for 'en-US' culture with default conversions; consider using Converter property of Binding. NotSupportedException:'System.NotSupportedException: TypeConverter kann nicht von DBTypes konvertieren.