Die Bestimmung überprüfte Radiobutton aus groupbox in WPF folgenden MVVM
Habe ich eine groupbox mit einigen radiobuttons. Wie bekomme ich die wissen was wird geprüft? Ich verwende WPF und nach MVVM.
<GroupBox Name="grpbx_pagerange" Header="Print Range">
<Grid >
<RadioButton Name="radbtn_all" Content="All Pages" GroupName="radios_page_range" IsChecked="True" />
<RadioButton x:Name="radbtn_curr" Content="Current Page" GroupName="radios_page_range" />
<RadioButton Name="radbtn_pages" Content="Page Range" GroupName="radios_page_range" />
....
</GroupBox>
Nun, eine Weise, die ich herausfinden konnte, war, zu binden, jeder RadioButton ist IsChecked
Eigenschaft einer Eigenschaft im ViewModel und dann tun, wenn..else-Logik in meinem ViewModel, um herauszufinden, die ausgewählten radiobutton-Steuerelements.
Aber es Ist eine andere elegante Möglichkeit?
InformationsquelleAutor Bhramar | 2013-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie binden
RadioButton.Command
der Radiobuttons auf einen Befehl von der ViewModel und senden eine einzigartige CommandParameter um zu ermitteln, welche Schaltfläche aufgerufen hat, den Befehl in commandhandler.in der command-handler-check für parameter zu identifizieren, die radiobutton-Komponente.
Dank
froh, dass es bei dir funktioniert hat 🙂
Buddy, Die Lösung funktioniert gut, ABER wie würde ich set default aktiviert zu jeder meiner RadioButton. Gut wir können es in der contructor , aber das würde GEGEN MVVM-Regeln. Irgendwelche Ideen wäre hilfreich .
wenn es aktiviert ist-Zustand Ihrer radiobutton sind keine Daten getrieben ich.e wenn Sie öffnen Sie Ihre Druck-dialog jedesmal mit default-option, dann die Einstellung IsChecked=true auf den ersten radiobutton-Steuerelement in xaml nicht stechen. 🙂
Hey @nit: ich denke, Ihre Antwort weist darauf hin, dass ich nicht
KISS
-(denken complx). Nochmals vielen Dank, Es hat geholfen. 🙂InformationsquelleAutor Nitin
Können Sie eine
enum
enthält die Werte derRadioButton
Objekte als Namen (in etwa), und binden dieIsChecked
- Eigenschaft an eine Eigenschaft der Art dieserenum
mit einemEnumToBoolConverter
.Dann im view-Modell oder der code hinter:
Fügen Sie die
Converter
:Dann schließlich, fügen Sie die Bindungen in der Benutzeroberfläche, festlegen der entsprechenden
ConverterParameter
:Nun können Sie sagen, was ist eingestellt, indem man die
Options
variable im view-Modell oder der code dahinter. Sie werden auch in der Lage sein, die überprüftRadioButton
durch die Einstellung derOptions
Eigenschaft.Enum
&Converter
Funktion . Aber ich bin nicht in der Lage, verteilen Sie die statische Ressource in-Fenster.Ressource - es wäre brauchbar, wenn könnten Sie bitte fügen Sie Ihre Sicht auf die Definition des statischen Ressource. Danke. 🙂Sie können den Konverter wie folgt aus: als erstes sind xml-namespace wie xmlns:local=="clr-namespace:WpfApplication1" i,e dann Namensraum, in dem Konverter deklariert ist. dann im Fenster.Rsources hinzufügen <local:EnumToBoolConverter x:Key="EnumToBoolConverter"/>
Ich habe dies ausprobiert:
<Window x:Name="win_printDialog" x:Class="M.N.Core.Control.DocumentPrintDialog" ... xmlns:local="clr-namespace:M.N.Core.Control" Title="Print Dialog" > <Window.Resources> <local:EnumToBoolConverter x:Key="EnumToBoolConverter" /> </Window.Resources>
Dies ist einfach so nicht funktioniert. Ich bezog mich in diesem Artikel Fehler sagt-"Die EnumToBoolConverter" nicht vorhanden ist im namespace "clr-namespace:M. N. Kern.Control"Eine leichte änderung, die ich gemacht, um diesen Ansatz war die Rückkehr
Binding.DoNothing
eher alsnull
- ansonsten, was ich sah, war ein rot-Validierung Grenze rund um die un-checked radio buttons. Schien zu beheben Dinge für mich.Ja, eine andere beliebte option ist die Rückkehr
DependencyProperty.UnsetValue
... es ist bis zu Ihnen, welche Sie bevorzugen.InformationsquelleAutor Sheridan
Es ist eine andere MVVM Weg, dies zu lösen, mit IsChecked-Eigenschaft
Hier ist das XAML
Ihrem Modell wird so etwas wie dieses
ViewModel wird in etwa so Aussehen (Die Auswahl-Logik)
Also wenn du den datacontext der view an das viewmodel. Sie müssen in der Lage sein, um es zu arbeiten.
Hoffe, es hilft.
InformationsquelleAutor vivekp
Wenn Sie Tag-Eigenschaft auf Optionen-Tasten (boolean, integer, strings), wie in seinem XAML
Dann können Sie folgende Funktion verwenden, um ausgewählten Wert (Taste)
wo
InformationsquelleAutor victor
Ich habe dasselbe problem, und ich gelöst durch das entfernen von "GroupName" - Eigenschaft von Radiobutton.
Bitte entfernen "GroupName" - Eigenschaft aus alle radio-buttons.
und überprüfen
InformationsquelleAutor user1513659