9 Stimmen

WPF: ListBox deaktivieren, aber Scrollen aktivieren

Ich habe mir den ganzen Morgen den Kopf darüber zerbrochen.

Im Grunde habe ich eine Listbox, und ich möchte verhindern, dass die Benutzer die Auswahl während eines langen laufenden Prozesses ändern, aber es ihnen ermöglichen, immer noch zu blättern.

Lösung:

Alle Antworten waren gut, ich ging mit schlucken Maus-Ereignisse, da das die meisten straight forward war. Ich verdrahtet PreviewMouseDown und PreviewMouseUp auf ein einzelnes Ereignis, das meine backgroundWorker.IsBusy überprüft, und wenn es die IsHandled-Eigenschaft auf die Ereignis-Args auf wahr gesetzt wurde.

0voto

Shrung ßhatt Punkte 13

Nun, ich habe eine gute Möglichkeit gefunden, diese Funktion bereitzustellen. Was ich tat, ist, dass in der DataTemplate der listBox ich die übergeordnete Layout aktivieren Eigenschaft mit dem booleschen Flag mit Seite als Quelle gebunden.

Schritt 1 - Geben Sie die x:Name Attribut auf der Seite. Wenn die Seite, die Sie verwenden, mit einer Basisseite erweitert wird, stellen Sie sicher, dass die Basisseite keine abstrakte Klasse ist und einen Standardkonstruktor ohne Argumente hat.

<Page x:Class="OPMS.Views.Registration"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    x:Name="MainPage"
    d:DesignWidth="1024"
    Title="Registration"
>

Schritt 2 - Verwenden Sie die Seite als Quelle für die IsEnabled-Eigenschaft der übergeordneten DataTemplate-Layoutelemente

<ListBox Grid.Row="2"
    ItemsSource="{Binding TestGroups}"
    AlternationCount="2"
    Padding="0"
    Margin="10,5,10,10"
>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding Name}"
                IsChecked="{Binding IsSelected}"
                IsEnabled="{Binding Source={x:Reference MainPage}, Path=DataContext.BindingVariableHere}"
            />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X