Evento SelectedItem nella casella di riepilogo WPF C#

 C Programming >> Programmazione C >  >> Tags >> WPF
Evento SelectedItem nella casella di riepilogo WPF C#

La soluzione per l'evento SelectedItem in Listbox WPF C#
è indicata di seguito:

Voglio catturare un evento quando RadioButton è selezionato in una ListBox , Sto cercando di utilizzare l'evento selectionChanged ma è stato così ritardato e non efficace. C'è un altro modo di fare questo? Grazie mille!

<ListBox SelectionChanged="lstPlotter_SelectionChanged_1" x:Name="lstPlotter"  Style="{StaticResource 0009}">
    <RadioButton Content="DWG To PDF.pc3" Style="{StaticResource 0004}" IsChecked="True"/>
    <RadioButton Content="AutoCAD PDF (High Quality Print).pc3" Style="{StaticResource 0004}"/>
    <RadioButton Content="AutoCAD PDF (General Documentation).pc3" Style="{StaticResource 0004}"/>
    <RadioButton Content="AutoCAD PDF (Smallest File).pc3" Style="{StaticResource 0004}"/>
    <RadioButton Content="AutoCAD PDF (Web and Mobile).pc3" Style="{StaticResource 0004}"/>
</ListBox>

Ti consiglio vivamente di imparare a separare i dati e la relativa presentazione (Visualizza).
L'intero concetto di WPF è costruito attorno a questa separazione.
Non separandoli, crei molti problemi a te stesso.

In questa attività, i tuoi dati sono una raccolta di stringhe contenute in RadioButton.Content.
Questa raccolta di stringhe deve essere passata all'origine ListBox.
Nel modello dell'elemento ListBox, è necessario passare il Modello di dati per l'elemento della raccolta dall'origine.
Ovvero, in questo caso, per la stringa.
È in questo modello di dati che è necessario impostare un RadioButton che rappresenterà una stringa dalla raccolta.
Il RadioButton deve essere associato alla proprietà IsSelected dell'oggetto ListBoxItem che lo contiene.

    <UniformGrid Background="AliceBlue" Columns="1">
        <FrameworkElement.Resources>
            <Style x:Key="0004"/>
            <Style x:Key="0009"/>
            <spec:StringCollection x:Key="ListBox.SourceItem">
                <sys:String>DWG To PDF.pc3</sys:String>
                <sys:String>AutoCAD PDF (High Quality Print).pc3</sys:String>
                <sys:String>AutoCAD PDF (General Documentation).pc3</sys:String>
                <sys:String>AutoCAD PDF (Smallest File).pc3</sys:String>
                <sys:String>AutoCAD PDF (Web and Mobile).pc3</sys:String>
            </spec:StringCollection>
            <DataTemplate x:Key="ListBox.ItemTemplate"
                          DataType="{x:Type sys:String}">
                <RadioButton GroupName="_listBox"
                             Content="{Binding}"
                             IsChecked="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBoxItem}}"
                             Style="{DynamicResource 0004}"/>
            </DataTemplate>
        </FrameworkElement.Resources>
        <TextBlock x:Name="tBlock"/>
        <ListBox x:Name="lstPlotter"
                 SelectionChanged="lstPlotter_SelectionChanged_1"
                 Style="{DynamicResource 0009}"
                 ItemTemplate="{DynamicResource ListBox.ItemTemplate}"
                 ItemsSource="{DynamicResource ListBox.SourceItem}"
                 SelectedIndex="0"
                 SelectionMode="Single"/>
    </UniformGrid>
        private void lstPlotter_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
                tBlock.Text = ((ListBox)sender).SelectedItem?.ToString();
        }