WPF-从ListBox获取combobox checked属性

WPF-从ListBox获取combobox checked属性,wpf,data-binding,listbox,checkbox,Wpf,Data Binding,Listbox,Checkbox,我有一个列表框,定义如下: <ListBox ItemsSource="{Binding Source={x:Static local:ResourceCollection.resourceList}}" Height="143" HorizontalAlignment="Left" Margin="6,6,0,0" Name="assignmentLB" VerticalAlignment="Top" Width="287" FontSize="12" FontWeight="Norma

我有一个列表框,定义如下:

<ListBox ItemsSource="{Binding Source={x:Static local:ResourceCollection.resourceList}}" Height="143" HorizontalAlignment="Left" Margin="6,6,0,0" Name="assignmentLB" VerticalAlignment="Top" Width="287" FontSize="12" FontWeight="Normal" IsEnabled="True" Grid.Column="0">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <CheckBox />
                <TextBlock Text="{Binding Content}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

如何循环浏览此列表框并仅为复选框已选中的项目检索TextBlock.Text值


还有。。。如何将复选框与文本块水平隔开。现在,它们彼此紧挨着,没有间隔。

向要绑定到的类添加一个布尔属性(与
内容
属性相同),并将
复选框
绑定到该类,如下所示:

然后,您可以简单地在
资源列表
中循环,并获取所有
IsSelected
设置为true的项目,如下所示:

resourceList.Where(r=>r.IsSelected)


至于水平间距,您只需要为
复选框
文本块
或两者提供一个。
TextBlock
上的边距为5,0应该是您所需要的。

就间距而言,您是否尝试过在
StackPanel
的元素中使用
margin
?我刚刚尝试过,它将边距放置在复选框的左侧,但是,复选框和TextBlock仍然彼此相对。谢谢你的建议。很好!我打赌有一天我需要使用这种方法。我的静态类(ResourceCollection)在几个窗口之间共享。例如:可以打开多个窗口,所有窗口共享同一个ResourceCollection。如果我修改该属性,则会导致其他窗口出现问题。除非其他窗口也引用此新的选定属性,否则您将不会看到它们中的任何更改。这是正确的方法,如果这不可能,那么您需要对基础架构进行一些更改。最坏的情况是,将资源类包装在包含所选属性的数据绑定类中,然后绑定到此特定窗口的列表框中的该类。好主意。我会在另一节课上讲。谢谢