In der WPF-App, die wir erstellen, haben wir 3 Gruppen von RadioButtons in einzelnen StackPanels nebeneinander. Wir versuchen, das folgende Verhalten zu programmieren. Wenn wir das Formular durchforsten, wollen wir nicht die einzelnen Radiobuttons durchblättern (Standardverhalten), sondern wir möchten in jeder Gruppe den "ersten" Radiobutton aufrufen und die Möglichkeit haben, auf den anderen zu blättern Radiobuttons (Liste) in jeder Gruppe, sobald wir auf die Gruppe klicken. Wir haben IsTabStop = False für die Radiobuttons unter jedem der ersten Radiobuttons in der Liste gesetzt. Dies gibt uns das gewünschte Verhalten für das Durchblättern durch jede Gruppe, aber dies erlaubt nicht die Fähigkeit, die Liste hoch/runter zu blättern. Das Auf/Ab-Verhalten des Pfeils funktioniert nur, wenn IsTabStop = True ist. Wir haben auch versucht, das GroupName-Attribut des Radiobuttons zu setzen, aber das Verhalten ist dasselbe wie oben beschrieben. In den alten Gewinnformularen gab es ein Radiobutton-Listen-Steuerelement, das dieses Verhalten hatte, und wir versuchen es nur neu zu erstellen. Hat jemand eine Idee, wie man dieses Verhalten wieder herstellt? Vielen Dank im Voraus für Ihre Hilfe...!WPF RadioButton-Gruppen in Xaml
Antwort
Um die Ausrichtung von links nach rechts zu ändern, verwenden Sie die FlowDirection-Eigenschaft zu RightToLeft.
RadioButton wird in der Gruppe verwendet, so dass der Benutzer nur eine Option aus den verfügbaren Optionen auswählen kann (zum Deaktivieren der Option ist keine zusätzliche Codierung erforderlich). Verwenden Sie denselben Gruppennamen der Radiobuttons, um in einer Gruppe zu markieren, so dass nur eine Option wie folgt ausgewählt werden kann.
<RadioButton Height="16" Margin="26,18,132,0" Name="RadioButton_Option1" VerticalAlignment="Top" Background="Snow" BorderBrush="Black" GroupName="Visit_eggHeadcafe.com" Foreground="DarkBlue">ASP.net Articles </RadioButton>
<RadioButton Height="16" Margin="26,18,132,0" Name="RadioButton_Option2" VerticalAlignment="Top" Background="Snow" BorderBrush="Black" GroupName="Visit_eggHeadcafe.com" Foreground="DarkBlue">C# Articles</RadioButton>
<RadioButton Height="16" Margin="26,18,132,0" Name="RadioButton_Option3" VerticalAlignment="Top" Background="Snow" BorderBrush="Black" GroupName="Visit_eggHeadcafe.com" Foreground="DarkBlue">ADO.net Articles</RadioButton>
<RadioButton Height="17" Margin="26,18,115,0" Name="RadioButton_Option4" VerticalAlignment="Top" Background="Snow" BorderBrush="Black" GroupName="Visit_eggHeadcafe.com" Foreground="DarkBlue" Width="164">SQL Server 2005 Articles</RadioButton>
<Button Margin="26,18,132,0" Width="75" Height="20" Click="Button_Click">Open Articles</Button>
</StackPanel >
Ich denke, die KeyboardNavigation angebracht Eigenschaften den Trick tun.
ich verspottet ein schnelles WPF Beispiel in XAML (sorry für die Länge) auf, ItemsControls zur Gruppe mit den Radiobutton-Elemente:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="Experiment.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Margin="91,139,0,0">
<ItemsControl KeyboardNavigation.IsTabStop="False" KeyboardNavigation.TabNavigation="Once" KeyboardNavigation.DirectionalNavigation="Contained">
<RadioButton Content="Alpha" KeyboardNavigation.TabIndex="2"/>
<RadioButton Content="Delta" KeyboardNavigation.TabIndex="2"/>
<RadioButton Content="Gamma" IsChecked="True" KeyboardNavigation.TabIndex="1"/>
<RadioButton Content="Beta" KeyboardNavigation.TabIndex="2"/>
</ItemsControl>
</Grid>
<Grid HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Margin="244,139,0,0">
<ItemsControl KeyboardNavigation.IsTabStop="False" KeyboardNavigation.TabNavigation="Once" KeyboardNavigation.DirectionalNavigation="Contained">
<RadioButton x:Name="First" Content="Eenee" KeyboardNavigation.TabIndex="2"/>
<RadioButton x:Name="Second" Content="Meenee" IsChecked="True" KeyboardNavigation.TabIndex="1"/>
<RadioButton x:Name="Third" Content="Mynee" KeyboardNavigation.TabIndex="2"/>
<RadioButton x:Name="Fourth" Content="Moe" KeyboardNavigation.TabIndex="2"/>
</ItemsControl>
</Grid>
<Grid HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Margin="391,139,0,0">
<ItemsControl KeyboardNavigation.IsTabStop="False" KeyboardNavigation.TabNavigation="Once" KeyboardNavigation.DirectionalNavigation="Contained">
<RadioButton Content="Extralarge" KeyboardNavigation.TabIndex="2"/>
<RadioButton Content="Large" KeyboardNavigation.TabIndex="2"/>
<RadioButton Content="Medium" KeyboardNavigation.TabIndex="2"/>
<RadioButton Content="Small" IsChecked="True" KeyboardNavigation.TabIndex="1"/>
</ItemsControl>
</Grid>
</Grid>
</Window>
Eine Lösung ist die Technik des Styling ein Listenfeldes zu verwenden aussehen eine Optionsfeldgruppe. Dann ist es möglich, zwischen den gestylten Listenfeldern zu wechseln und mit den Pfeiltasten einzelne Listenfelder auszuwählen.
Hier ist eine komplette Demo, die auch als sample application
public class RadioButtonGroupsViewModel
{
public RadioButtonGroupsViewModel()
{
Items1 = new List<string> {"One", "Two", "Three"};
Selected1 = "One";
Items2 = new List<string> {"Four", "Five", "Six"};
Selected2 = "Five";
Items3 = new List<string> {"Seven", "Eight", "Nine", "Ten"};
Selected3 = "Ten";
}
public IEnumerable<string> Items1 { get; private set; }
public string Selected1 { get; set; }
public IEnumerable<string> Items2 { get; private set; }
public string Selected2 { get; set; }
public IEnumerable<string> Items3 { get; private set; }
public string Selected3 { get; set; }
}
XAML
xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
<Page.Resources>
<Style x:Key="RadioButtonListBoxStyle" TargetType="ListBox">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListBoxItem">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<RadioButton
IsTabStop="False"
GroupName=""
IsChecked="{Binding IsSelected, RelativeSource={RelativeSource TemplatedParent}}" >
<RadioButton.Content>
<Border VerticalAlignment=
"{TemplateBinding Control.VerticalContentAlignment}" Padding="2">
<ContentPresenter
Margin="{TemplateBinding Control.Padding}"
VerticalAlignment=
"{TemplateBinding Control.VerticalContentAlignment}"
HorizontalAlignment=
"{TemplateBinding Control.HorizontalContentAlignment}"
RecognizesAccessKey="True" />
</Border>
</RadioButton.Content>
</RadioButton>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Page.DataContext>
<Samples:RadioButtonGroupsViewModel />
</Page.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<ListBox Style="{StaticResource RadioButtonListBoxStyle}"
ItemsSource="{Binding Items1}"
SelectedItem="{Binding Selected1}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
<ListBox Grid.Row="1"
Style="{StaticResource RadioButtonListBoxStyle}"
ItemsSource="{Binding Items2}"
SelectedItem="{Binding Selected2}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
<ListBox Grid.Row="2"
Style="{StaticResource RadioButtonListBoxStyle}"
ItemsSource="{Binding Items3}"
SelectedItem="{Binding Selected3}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
- 1. WPF: Macht in XAML
- 2. Umwandlung von WPF xaml in Silverlight xaml
- 3. Kontextmenü in WPF ohne XAML
- 4. Dynamische Ressourcen in WPF/XAML?
- 5. Wie wpf Combobox in Xaml
- 6. WPF Datumszeichenkette Format in XAML
- 7. Spaltenkopfnamen in XAML-WPF festlegen
- 8. Datagrid-Design in Wpf (XAML)
- 9. WPF: XAML-Namespace
- 10. WPF XAML Style Gallery
- 11. WPF Xaml-Vorlage generieren
- 12. Verschwommen Adorner WPF XAML
- 13. WPF xaml Quellpfad
- 14. XAML WPF CheckBox Validierung
- 15. Einstellung Datacontext in XAML in WPF
- 16. Validate WPF Textdaten über XAML
- 17. WPF XAML ListView mit ScrollBars
- 18. WPF XAML datenbankgesteuertes Kontrollkästchen Werte
- 19. Kompilierung von XAML-Dateien (WPF)
- 20. WPF Xaml Bild von Konverter
- 21. WPF (XAML - Datenbindung - Finden Vorfahr)
- 22. Animate DrawingImage GeometryDrawing Wpf Xaml
- 23. Aktualisieren WPF Usercontrol über XAML
- 24. WPF User Control XAML Bindung
- 25. Skalierung komplexe SVG Pfade in WPF XAML
- 26. WPF - MergedDictionary mit RibbonControlsLibrary in XAML
- 27. Wie funktioniert die Bindung in WPF/XAML?
- 28. Zugriff auf XAML (WPF) -Elemente in F #
- 29. Convert XAML PathGeometry in WPF PathGeometry
- 30. Initialisieren Sie ein WPF-Kombinationsfeld in XAML?
Sie die Frage beantworten nicht wirklich heruntergeladen werden kann gefragt –