Ich habe eine "Checked ListBox", eine ListBox
mit einer CheckBox
für jedes meiner Artikel.
In diesem ListBox
habe ich eine Liste der Spieler.WPF Bindung an eine Funktion zurück
<ListBox ItemsSource="{Binding MyPlayers}" SelectedItem="{Binding SelectedPlayer}" Margin="69,51,347.4,161.8">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<CheckBox IsChecked="{Binding ???}" Content="{Binding Path=Pseudo}" />
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Ansichtsmodell:
public class MainWindowViewModel : BaseViewModel
{
SavingContext MyDatabaseContext;
public ObservableCollection<Player> MyPlayers
{
get
{
return MyDatabaseContext.MyPlayers.Local;
}
}
Tournament _MyTournament;
public Tournament MyTournament
{
get
{
return _MyTournament;
}
set
{
_MyTournament = value;
}
}
public MainWindowViewModel(Tournament myTournament)
{
MyDatabaseContext = new SavingContext();
MyDatabaseContext.MyPlayers.Load();
MyTournament = myTournament;
}
}
Ich gehe in meinem ViewModel
ein Tournament
, die eine HashSet
von Players
Participants
genannt enthält.
Ich möchte meine IsChecked
Eigenschaften an das Ergebnis von MyTournament.Participants.Contains(this)
binden mit dieser ist die Player
bezogen auf die CheckBox
. Aber ich kann es nicht schaffen.
Edit:
Ich habe versucht, einen Konverter zu verwenden, aber mit keinem Erfolg. <helper:PlayerToTournamentRegistered x:Key="PlayerToTournamentRegistered" />
<ListBoxItem>
<CheckBox IsChecked="{Binding Converter={StaticResource PlayerToTournamentRegistered}}" Content="{Binding Path=Pseudo}" />
</ListBoxItem>
public class PlayerToTournamentRegistered : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//Temp test to see if it would work
if (value == null) return false;
return true;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Ich erhalte eine Fehlermeldung jedes Mal Provide value on 'System.Windows.Data.Binding' threw an exception
Irgendwelche Hinweise?
Es ist unmöglich, ohne eine gute [MCVE] eine Beratung zur Verfügung zu stellen, die deutlich zeigt, was Sie haben versucht, und was nicht funktioniert. Datenverbindungsanforderungen sind einfach: Öffentliche Eigenschaften, die von Benachrichtigungen über Eigenschaftenänderungen unterstützt werden. Ein Konverter muss funktionieren, ohne Exceptions zu werfen, und Converter-Inputs müssen weiterhin Property Change-Benachrichtigungen haben, damit WPF weiß, wann der Converter ausgeführt werden soll. Wenn das Sie nicht wieder auf Kurs bringt, reparieren Sie bitte Ihre Frage, damit sie die benötigten Informationen enthält. –
Ich weiß nicht, was fehlt, um ein minimales, komplettes und überprüfbares Beispiel zu haben, ein Appart für die MVVM-Implementierung, die klassisch ist, und die Entitäts-Framework-Struktur (die ich im Detail darlege). Sie können den Rest in einem neuen Projekt hinzufügen, um das gleiche reproduzierbare Beispiel zu erhalten. – Belterius
_ "Ich weiß nicht, was für ein minimales, vollständiges und verifizierbares Beispiel fehlen würde" _ - dann hast du die [mcve] Seite nicht gelesen. Siehe auch die Artikel, die unten auf der [ask] Seite verlinkt sind (und natürlich, lies das auch). Was fehlte, war, dass Sie nicht einmal die "Turnier" - oder "Spieler" -Klassen einbezogen haben, geschweige denn ein Codebeispiel, das sowohl ** vollständig ** als auch ** minimal ** ist. –