Laden...

Listbox SelectedIndex funktioniert nicht?

Erstellt von bl4ckY vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.132 Views
B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren
Listbox SelectedIndex funktioniert nicht?

Wenn ich versuche den Index meiner Listbox zu setzen sagt er mir die Eigenschaft wäre Schreibgeschützt. Normal?

public void newImage(List<BitmapSource> imageList)
        {
            try
            {
                InitializeComponent();
                imageListBox.ItemsSource = imageList;
                imageListBox.SelectedIndex = 1;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }

Leider finde ich im Internet aber nur diese oder ähnliche Lösungen. Kann mir jemand schnell auf die Sprünge helfen. Ich habe alle mir erdenklichen Möglichkeiten ausprobiert aber nichts geht 😕 Als User funktioniert es also keine read-only Eigenschaft.

2.298 Beiträge seit 2010
vor 13 Jahren

Scheint als hätte die Property der ListBox keinen Setter. Versuch es doch mal über das SelectedItem.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Aber kann ja nicht sein das er mir einfach die Setter Methode klaut ohne Grund.

Oder liegt es daran das ich mir meine eigene Setter gebaut habe um die Listview mit Bildern zu füllen?

<UserControl.Resources>
        <Style TargetType="{x:Type ListBox}">
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="2" Margin="7">
                            <Image Source="{Binding}" Stretch="Fill" Width="100" Height="120" />
                        </Border>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

Meine Exception:

---------------------------

---------------------------
System.InvalidOperationException: Für dieses image-Objekt kann keine Eigenschaft festgelegt werden, da es schreibgeschützt ist.

   bei System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal)

   bei System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)

   bei System.Windows.Controls.Primitives.Selector.ItemSetIsSelected(Object item, Boolean value)

   bei System.Windows.Controls.Primitives.Selector.SelectionChanger.CreateDeltaSelectionChange(List`1 unselectedItems, List`1 selectedItems)

   bei System.Windows.Controls.Primitives.Selector.SelectionChanger.End()

   bei System.Windows.Controls.Primitives.Selector.SelectionChanger.SelectJustThisItem(Object item, Boolean assumeInItemsCollection)

   bei System.Windows.Controls.Primitives.Selector.OnSelectedIndexChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

   bei System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)

   bei System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)

   bei System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)

   bei System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType)

   bei System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal)

   bei System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)

   bei System.Windows.Controls.Primitives.Selector.set_SelectedIndex(Int32 value)

   bei Client.ImageShowPreview.newImage(List`1 imageList) in C:\Dokumente und Einstellungen\****\Eigene Dateien\Visual Studio 2008\Projects\Scheinansicht\Client\ImageShowPreview.xaml.cs:Zeile 30.
---------------------------
OK   
---------------------------

Problem scheint wirklich von dem Element in der Listbox zu kommen. Komisch ist nur das man später ohne Probleme in der Listbox rum klicken kann und es auch übernommen wird.

1.378 Beiträge seit 2006
vor 13 Jahren

Es hat dir niemand was geklaut. 😃 Versuchs einfach mal wie inflames2k bereits erwähnt hat mit SelectedItem.

so in der Art vielleicht:


        public void newImage(List<BitmapSource> imageList)
        {
            try
            {
                InitializeComponent();
                imageListBox.ItemsSource = imageList;
                imageListBox.SelectedItem = imageList.First();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }

Lg XXX

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Leider auch gleiches Problem.

Kann es davon kommen das ich ein Binding mache? Eher nicht oder?

1.378 Beiträge seit 2006
vor 13 Jahren

Probier mal ohne den Style die Daten zu laden. Funktionierts dann?

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Hab ich eben auch probiert und wollte gerade mein Post editieren 😃

Nein leider auch keine Änderung. Wie kommt er denn überhaupt auf die Idee er müsse das Property auf das Image Objekt anwenden? Ist mir echt schleierhaft. Mein Computer entwickelt ein Bewusstsein 😛

1.378 Beiträge seit 2006
vor 13 Jahren

Von wo wird denn die Methode newImage aufgerufen?

Ich hab hier ein denke ich ähnliches Problem gefunden, bei dem empfohlen wird die Eigenschaften durch Dispatcher.Invoke zu setzten. (offenbar aus einem fremden Thread).

Oder vielleicht hängts auch mit deinen Images zusammen. Aus irgendwelchen Gründen sind sie "frozen" und offenbar möchte die Listbox aber irgendwelche Eigenschaften setzen. Warum und weshalb kann ich an der Stelle nicht beantworten. 😃

Lg XXX

B
bl4ckY Themenstarter:in
193 Beiträge seit 2009
vor 13 Jahren

Dank deiner Hilfe konnte ich es endlich lösen. Deine Vorschläge haben leider nicht funktioniert aber dadurch kam ich auf die Idee mir von dem Bild einfach mal einen Klon zu erstellen. Dieser ist für andere Thread bearbeitbar.

Übrigens das erste mal das ich die Clone Funktion wirklich sinnvoll nutzen konnte.

Warum Freeze in diesem Zusammenhang nicht funktioniert verstehe ich wieder rum nicht. Aber das spielt ja auch keine Rolle mehr.

Danke xxx