none
ListBox.SelectionMode, kein None - oder - Man muss immer etwas auswählen RRS feed

  • Frage

  • Hallo!

    Eigentlich beschäftigt mich ein recht einfaches Problem, zu dem ich aber nur komplizierte Lösungen finde bist jetzt.

    Ich habe eine Listbox mit einem DataTemplate und halt ein paar Einträgen darin. Nun soll diese Liste lediglich diese Daten informativ anzeigen und nicht eine Auswahl ermöglichen. SelectionMode lässt mich aber nur Single, Multiple oder Extended setzten.

    Meine erste Idee war ja, das Template weiter so anzupassen, dass das ausgewählte Element halt auch die Vordergrundfarbe als Farbe hat, anstatt der Akzentfarbe, aber naja.
    Zweite Idee, das ganze im Code wieder zu deselektieren, aber auch das klingt für mich nicht dierkt nach guter Programmierung.

     

    Wie also treib ich der ListBox die Auswahl aus? :P

     

    Danke schonmal,

    Christian

    Montag, 2. Mai 2011 20:01

Antworten

  • Nun soll diese Liste lediglich diese Daten informativ anzeigen und nicht eine Auswahl ermöglichen.

    Hallo Christian Steinert_,

    Das kann man schön mit dem ItemsControl machen.

    [XAML]

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    			<ScrollViewer Margin="25,26,29,34">
    				<ItemsControl Height="529" Width="385" Name="itemsControl" />
    			</ScrollViewer></Grid>
    </Grid>
    

     

    [C#]

        public MainPage()
        {
          InitializeComponent();
          FillItUp(itemsControl);
    
        }
    
        void FillItUp(ItemsControl itemsControl)
        {
          string[] fontFamilies = 
          {
            "Arial", "Arial Black", "Calibri", "Comic Sans MS",
            "Courier New", "Georgia", "Lucida Sans Unicode",
            "Portable User Interface", "Segoe WP", "Segoe WP Black",
            "Segoe WP Bold", "Segoe WP Light", "Segoe WP Semibold",
            "Segoe WP SemiLight", "Tahoma", "Times New Roman",
            "Trebuchet MS", "Verdana", "Webdings"
          };
          foreach (string fontFamily in fontFamilies)
            itemsControl.Items.Add(new FontFamily(fontFamily));
        }
    

     

    Alternativ, die ListBox stylen so dass die Selektion nicht sichtbar ist, aber naja…aber die Selektion existiert J

     

    <ListBox.Resources> 
     <Style TargetType="ListBoxItem"> 
      <Style.Resources> 
       <!-- SelectedItem mit Focus --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                Color="Transparent" /> 
       <!-- SelectedItem ohne Focus --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                Color="Transparent" /> 
       <!-- SelectedItem Text Vordergrund --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" 
                Color="Black" /> 
      </Style.Resources> 
      <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
     </Style> 
    </ListBox.Resources>
    

     

    Grüße,

    Robert

    Mittwoch, 25. Mai 2011 13:53

Alle Antworten

  • Nun soll diese Liste lediglich diese Daten informativ anzeigen und nicht eine Auswahl ermöglichen.

    Hallo Christian Steinert_,

    Das kann man schön mit dem ItemsControl machen.

    [XAML]

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    			<ScrollViewer Margin="25,26,29,34">
    				<ItemsControl Height="529" Width="385" Name="itemsControl" />
    			</ScrollViewer></Grid>
    </Grid>
    

     

    [C#]

        public MainPage()
        {
          InitializeComponent();
          FillItUp(itemsControl);
    
        }
    
        void FillItUp(ItemsControl itemsControl)
        {
          string[] fontFamilies = 
          {
            "Arial", "Arial Black", "Calibri", "Comic Sans MS",
            "Courier New", "Georgia", "Lucida Sans Unicode",
            "Portable User Interface", "Segoe WP", "Segoe WP Black",
            "Segoe WP Bold", "Segoe WP Light", "Segoe WP Semibold",
            "Segoe WP SemiLight", "Tahoma", "Times New Roman",
            "Trebuchet MS", "Verdana", "Webdings"
          };
          foreach (string fontFamily in fontFamilies)
            itemsControl.Items.Add(new FontFamily(fontFamily));
        }
    

     

    Alternativ, die ListBox stylen so dass die Selektion nicht sichtbar ist, aber naja…aber die Selektion existiert J

     

    <ListBox.Resources> 
     <Style TargetType="ListBoxItem"> 
      <Style.Resources> 
       <!-- SelectedItem mit Focus --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                Color="Transparent" /> 
       <!-- SelectedItem ohne Focus --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
                Color="Transparent" /> 
       <!-- SelectedItem Text Vordergrund --> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" 
                Color="Black" /> 
      </Style.Resources> 
      <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
     </Style> 
    </ListBox.Resources>
    

     

    Grüße,

    Robert

    Mittwoch, 25. Mai 2011 13:53
  • Ich danke vielmals, für diese wunderschöne Antwort!
    Mittwoch, 25. Mai 2011 13:55