[英]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.