C-Sharp MVVM DataContext geht verloren
Hallo @ All!
Ich kaue schon wieder an einem Problem mit WPF in C# und hoffe aufs Neue auf eure Hilfe, weil ich der Lösung einfach nicht auf die Spur komme.
Ich habe ein MainWindow mit mehreren UserControls. Einige davon sind vom Aufbau her identisch. Mit 2 Buttons im MainWindow schalte ich zwischen den UserControl hin und her.
So bringe ich die Controls in Reihenfolge::
Im XAML des MainWindow mache ich die UserCotrols so bekannt:
So frage ich das entsprechende Control ab;
Das funktioniert gut soweit. DataContext <> Properties passt auch.
Nun mein Problem:
Ich habe 3 UserControls wie im Bild unten. Die RadioButtons binde ich im jeweiligen Model auf ein enum-Property. Das ganze läuft über einen IValueConverter so wie es in diesem Example von Colinardo dargestellt ist: C-Sharp WPF XAML CheckBox.IsEnabled wenn ListViewItem.Select
Sobald das UserControl "visible" ist wird einer der RadioButtons vorselektiert. Das funktioniert auch, aber nur, wenn ich nicht mehr als 1 UserControl entsprechend herrichte. Sobald ich ein zweites mit dem Radiobuttons, enum-Property und IValueConverter ausstatte, wird der DataContext auf das Zuletzt initialisierte UserControl gesetzt. Der Effekt ist, dass beim Visible setzen des ersten UserControls keiner der RadioButtons ausgewählt ist, erst beim zuletzt initialisierten.
So sehen die UserControls aus:
Was kann ich tun um den DataContext sicher auf das entsprechende UserControl zu setzen?
Habe mich schon damit und ähnlichem versucht: https://www.codeproject.com/questions/589901/inheritanceplusofplusdataco ...
Leider ohne Erfolg.
Danke für eure Hilfe!
Mayho
Ich kaue schon wieder an einem Problem mit WPF in C# und hoffe aufs Neue auf eure Hilfe, weil ich der Lösung einfach nicht auf die Spur komme.
Ich habe ein MainWindow mit mehreren UserControls. Einige davon sind vom Aufbau her identisch. Mit 2 Buttons im MainWindow schalte ich zwischen den UserControl hin und her.
So bringe ich die Controls in Reihenfolge::
private static Dictionary<int, UserControl> _UserControlSequence = new Dictionary<int, UserControl>();
public Dictionary<int, UserControl> UserControlSequence
{
get
{
if (_UserControlSequence.Count < 1)
{
_UserControlSequence.Add(0, WizzardWelcome);
_UserControlSequence.Add(1, WizzardSelect);
_UserControlSequence.Add(2, WizzardPrerequisites);
_UserControlSequence.Add(3, WizzardSetups);
_UserControlSequence.Add(4, WizzardAdditionals);
_UserControlSequence.Add(5, WizzardBuild);
}
return _UserControlSequence;
}
}
Im XAML des MainWindow mache ich die UserCotrols so bekannt:
<Window
....
....
xmlns:uControls="clr-namespace:myProj"
<grid>
<uControls:WizzardPrerequisites
x:Name="WizzardPrerequisites"
Margin="20,50,375,78"
Panel.ZIndex="1000"
Visibility="Hidden"/>
<uControls:blablabla
...
...
...
.../>
</grid>
>/Window>
forech(var control in UserControlSequence)
{
if(control.Key == nextControl)
control.Value.Visibility = System.Windows.Visibility.Visible;
else
control.Value.Visibility = System.Windows.Visibility.Hidden;
}
Das funktioniert gut soweit. DataContext <> Properties passt auch.
Nun mein Problem:
Ich habe 3 UserControls wie im Bild unten. Die RadioButtons binde ich im jeweiligen Model auf ein enum-Property. Das ganze läuft über einen IValueConverter so wie es in diesem Example von Colinardo dargestellt ist: C-Sharp WPF XAML CheckBox.IsEnabled wenn ListViewItem.Select
Sobald das UserControl "visible" ist wird einer der RadioButtons vorselektiert. Das funktioniert auch, aber nur, wenn ich nicht mehr als 1 UserControl entsprechend herrichte. Sobald ich ein zweites mit dem Radiobuttons, enum-Property und IValueConverter ausstatte, wird der DataContext auf das Zuletzt initialisierte UserControl gesetzt. Der Effekt ist, dass beim Visible setzen des ersten UserControls keiner der RadioButtons ausgewählt ist, erst beim zuletzt initialisierten.
So sehen die UserControls aus:
Was kann ich tun um den DataContext sicher auf das entsprechende UserControl zu setzen?
Habe mich schon damit und ähnlichem versucht: https://www.codeproject.com/questions/589901/inheritanceplusofplusdataco ...
Leider ohne Erfolg.
Danke für eure Hilfe!
Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 327092
Url: https://administrator.de/forum/c-sharp-mvvm-datacontext-geht-verloren-327092.html
Ausgedruckt am: 11.04.2025 um 23:04 Uhr
1 Kommentar