Hallo,
Der Code wurde angepasst RoslynPad befindet sich jetzt auch im gleichen Projekt.
Wenn ich das richtig verstehe könnte ich dann komplett darauf verzichten?
Edit:
var container = new ContainerConfiguration()
.WithAssembly(typeof(MainView).Assembly);
var locator = container.CreateContainer().GetExport<IServiceProvider>();
So gehts erst mal.
Also bisher finde ich es doch ganz schön übertrieben komplex so recht sind mir scheinbar die Vorteile noch nicht bewusst...
Vielen Dank fürs Helfen
Gruß
Hallo, ich versuche gerade ein Projekt zu verstehen "RoslynPad" weil ich teilweise bei mir davon was Implementieren will
Aber beim besten willen was passiert hier
var container = new ContainerConfiguration()
.WithAssembly(typeof(MainViewModelBase).Assembly) // RoslynPad.Common.UI
.WithAssembly(typeof(MainView).Assembly); // RoslynPad
var locator = container.CreateContainer().GetExport<IServiceProvider>();
_viewModel = locator.GetService<MainViewModelBase>();
Die Ausnahme die ausgelöst wird bringt mich nämlich auch nicht wirklich weiter.
Fehlermeldung:
System.Windows.Markup.XamlParseException
HResult=0x80131501
Message=Zeilennummer "15" und Zeilenposition "10" von "Durch den Aufruf des Konstruktors für Typ "ThePLCProject.Ui.Editor.Views.MainView", der den angegebenen Bindungseinschränkungen entspricht, wurde eine Ausnahme ausgelöst.".
Source=PresentationFramework
StackTrace:
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)Inner Exception 1:
CompositionFailedException: Only one export for the contract 'IServiceProvider' is allowed, but the following parts: 'SystemCompositionServiceProvider', 'SystemCompositionServiceProvider' export it.
Schon mal vielen Dank für die Geduld
Gruß
Servus,
ui zeigt nur auf den Namespace.
Ich hab das Problem aber erstmal gelöst, was genau geholfen hat weiß ich aber nicht.
Dieses Problem habe ich aber bei Bindings auch des öfteren, dann zeigt mir der Designer einfach nichts mehr an.
Ich hab jetzt den Build Ordner gelöscht und die .sue Datei......
Aktuell passt es wieder.
Gruß
Hallo,
Ich habe vermehrt das Problem das Klassen in einem Namespace nicht gefunden werden zumindestens sagt mir das der Designer.
Wenn ich das Programm aber starte passt alles.
Woran kann das liegen ?
Bsp:
d:DataContext="{d:DesignInstance ui:MainViewModel}"
Tooltip " The Name MainViewModel does not exist in the Namspace......"
Gruß
okay danke.
Ich erzeuge aktuell die Datenbank via Code
Und bekomme gelegentlich die Exceptions
Fehlermeldung:
System.DllNotFoundException: 'Die DLL "e_sqlite3": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.'
bei Batteries.Init
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
Batteries.Init();
optionsBuilder.UseSqlite("Data Source=MyDatabase.sqlite");
}
}
Gruß
Ich kenne keine Empfehlung und nach kurzen googlen bin ich auch nicht fündig geworden.Ich hab nur sehr viele Empfehlungen gefunden und nicht die eine.
Ist das denn eigentlich nötig ?
Grüße
Also ich hab es aufgegeben,..
Ich arbeite jetzt mit einem Template und der Aufbau ist ein wenig verändert und ja was soll ich sagen es geht. Ich kann mir aber immer noch nicht erklären wieso der andere Ansatz nicht funktionierte evtl meldet sich dazu ja noch jemand
<DataTemplate x:Key="MenuItemTemplate">
<Grid Height="60" RenderTransformOrigin="0.5,0.5">
<Button Command="{Binding Path=NavigationToCommand}" CommandParameter="{Binding}" Style="{x:Null}" Background="Transparent" BorderThickness="0">
<StackPanel Orientation="Horizontal" Margin="50 0" Height="60" RenderTransformOrigin="0.5,0.5">
<materialDesign:PackIcon Kind="{Binding NavigationIcon}" Width="30" Height="30" VerticalAlignment="Center" Margin="5"/>
<TextBlock Text="{Binding Path = NavigationName}" Margin="10" VerticalAlignment="Center" Style="{x:Null}" Background="Transparent" FontSize="15"/>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
v
<ListBox x:Name="allToDoItemsListBox"
ItemsSource="{Binding MenuItems,Mode=OneWay}"
ItemTemplate="{StaticResource MenuItemTemplate}"
HorizontalAlignment="Right"/>
Grüße
Hallo,
Ja ich arbeite mit ViewModels und mit Prism(AutoWireViewModel ist aktiviert).
Hier ein größerer ausschnitt ich habe die ItemSource vom ListView auf meine Liste gesetzt.
<ListView x:Name="MainMenu" ItemsSource="{Binding MenuItems}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="50 0" Height="60" RenderTransformOrigin="0.5,0.5">
<materialDesign:PackIcon Kind="{Binding Path= NavigationIcon}" Width="30" Height="30" VerticalAlignment="Center" Margin="5"/>
<TextBlock Text="{Binding Path= NavigationName}" Margin="10" VerticalAlignment="Center">
<TextBlock.InputBindings>
<MouseBinding
Command="{Binding Path=NavigationToCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
MouseAction="LeftClick" />
</TextBlock.InputBindings>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Ich habe schon mehrfach gelesen das es Probleme macht wenn man durch ein Datatemplate ein Delegate Command auslösen will.
Ich hab es daher via einer RelativeSource versucht.
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="50 0" Height="60" RenderTransformOrigin="0.5,0.5">
<materialDesign:PackIcon Kind="{Binding Path= NavigationIcon}" Width="30" Height="30" VerticalAlignment="Center" Margin="5"/>
<TextBlock Text="{Binding Path= NavigationName}" Margin="10" VerticalAlignment="Center">
<TextBlock.InputBindings>
<MouseBinding
Command="{Binding Path=NavigationToCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
MouseAction="LeftClick" />
</TextBlock.InputBindings>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
Ich kann nur gerade nicht viel mit dieser Meldung anfangen
"System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Documents.List', AncestorLevel='1''. BindingExpression:Path=NavigationToCommand; DataItem=null; target element is 'MouseBinding' (HashCode=2881685); target property is 'Command' (type 'ICommand')
"
und
"
System.Windows.Data Error: 40 : BindingExpression path error: 'NavigationToCommand' property not found on 'object' ''ListView' (Name='MainMenu')'. BindingExpression:Path=NavigationToCommand; DataItem='ListView' (Name='MainMenu'); target element is 'MouseBinding' (HashCode=2881685); target property is 'Command' (type 'ICommand')
"
Gruß
Also es gibt bei mir
In Model.SQLite befindet sich eben das
optionsBuilder.UseSqlite("Data Source=MyDatabase.sqlite", x => x.MigrationsAssembly("ThePLCProject.Model.SQLite"));
Wobei mir nicht bewusst ist wofür der Lambda Ausdruck benutzt wird.
Ich bin eben nach dem von dir verlinkten Beispiel vorgegangen.
Einzig bei Punkt 2 bin ich mir nicht ganz sicher, ich hab hier einfach einen Verweis von Model.SQLite in Ui.Desktop hinzugefügt. Das war ja so gemeint?
Und ebenso hab ich Punkt 5 nicht gemacht weil ich keine Ringabhängigkeit bisher hab.
Gruß