簡體   English   中英

從選中的列表框中檢索選定的項目?

[英]Retrieving Selected Items from Checked List Box?

我已經實現了一個Checked List Box(或者試圖實現一個Checked List Box),並且進展順利。 我已經能夠用目錄中的文件列表填充它(這正是我所需要的),但是當我選擇這些項目,然后嘗試檢查.SelectedItems屬性時,列表中沒有任何內容。

這是XAML:

<ListBox x:Name="lbxSourceFiles" x:FieldModifier="private" SelectionMode="Multiple" Grid.Column="1" Grid.Row="2">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <ListBoxItem IsSelected="{Binding IsChecked}">
                <CheckBox Content="{Binding Name}" Tag="{Binding FullName
            </ListBoxItem>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

這就是我的填充方式:

DirectoryInfo DI = new DirectoryInfo("Trivia Source Files");
this.lbxSourceFiles.ItemsSource = new ObservableCollection<FileInfo>( DI.GetFiles( "*.xls" ) );

顯然,我在這里做錯了事,並且到處都有關於如何創建這些東西的帖子,但是我無法弄清楚如何使其真正用於選擇項目。

請告訴我我在做什么錯。

您的DataTemplate錯誤。 您創建另一個ListBoxItem,因此簡化的可視樹如下所示:

+- ListBox
|  +- ListBoxItem
|  |  +- ListBoxItem
|  |     +- CheckBox
|  +- ListBoxItem
|  |  +- ListBoxItem
|  |     +- CheckBox
|  +- ListBoxItem
|  |  +- ListBoxItem
|  |     +- CheckBox

只需從DataTemplate中刪除ListBoxItem並在CheckBox中設置Binding,即可在其中找到正確的ListBoxItem

<DataTemplate>
    <CheckBox Content="{Binding Name}"
        IsChecked="{Binding 
            RelativeSource={RelativeSource 
                Mode=FindAncestor, 
                AncestorType={x:Type ListBoxItem}},
            Path=IsSelected,
            Mode=TwoWay}"
    Tag="{Binding FullName}" />
</DataTemplate>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM