具有来自一个来源的数据的列表框,但是Listbox.ItemTemplate具有来自另一个数据源的下拉列表

问题描述 投票:0回答:1

在表格上,我有Listbox个事件的受害者。 (我在警察局工作)。ListBox.ItemsSource是受害者/人的ObservableCollectionListBox.ItemTemplate是具有两行的网格。第1行将是受害者(姓名,种族,性别等)第2行有一个删除按钮,用于从列表中删除受害者,还有一个ComboBox,其中有一个可能的关系描述符(父亲,母亲,女son等)列表,用于描述受害者之间的关系。和嫌疑犯。

在第2行XAML被注释掉的情况下,当用户输入事件编号时,该表单可以正常显示受害者列表。

第2行XAML未注释掉,试图显示受害者列表时,表格冻结。我怀疑ListBox源和ComboBox源之间存在某种绑定冲突。 ,但对XAML或ListBox.DataTemplate中允许使用的内容知之甚少。

无论如何,下面是ListBox XAML。我究竟做错了什么?

       <ListBox Name="lstbxVictimToSuspect" ItemsSource="{Binding Form104CModel.Incident.Victims}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Name="VictimToSuspect" Height="Auto" MinHeight="100">
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>   <!-- Victims -->
                            <RowDefinition></RowDefinition>   <!-- Relationship and Delete Button -->
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="75*"></ColumnDefinition>
                            <ColumnDefinition Width="25*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Grid Name="grdVictims" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
                            <Grid.RowDefinitions>
                                <RowDefinition></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="25*"/>
                                <ColumnDefinition Width="110*"/>
                                <ColumnDefinition Width="100*"/>
                                <ColumnDefinition Width="100*"/>
                                <ColumnDefinition Width="70*"/>
                                <ColumnDefinition Width="80"/>
                                <ColumnDefinition Width="20*"/>
                                <ColumnDefinition Width="61*"/>
                            </Grid.ColumnDefinitions>
                            <StackPanel Name="stpnlVictimNumber" Grid.Row="0" Grid.Column="0">
                                <TextBlock> #</TextBlock>
                                <TextBox Name="VictimNumber"  IsEnabled="True"
                                         FontWeight="Bold"
                                         Text="{Binding InvolvementNumber}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimLastName" Grid.Row="0" Grid.Column="1">
                                <TextBlock HorizontalAlignment="Left">VICTIM LAST NAME</TextBlock>
                                <TextBox Name="VictimLastName" IsEnabled="True"
                                         FontWeight="Bold" VerticalAlignment="Center"
                                         Text="{Binding LastName}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimFirstName" Grid.Row="0" Grid.Column="2" >
                                <TextBlock>FIRST</TextBlock>
                                <TextBox Name="VictimFirstName" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding FirstName}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimMiddleName" Grid.Row="0" Grid.Column="3">
                                <TextBlock>MIDDLE</TextBlock>
                                <TextBox Name="VictimMiddleName" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding MiddleName}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimSuffix" Grid.Row="0" Grid.Column="4">
                                <TextBlock>SUFFIX</TextBlock>
                                <TextBox Name="VictimSuffix" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding Suffix}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimRace" Grid.Row="0" Grid.Column="5">
                                <TextBlock>RACE</TextBlock>
                                <TextBox Name="VictimRace" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding Race}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimSex" Grid.Row="0" Grid.Column="6">
                                <TextBlock>SEX</TextBlock>
                                <TextBox Name="VictimGender" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding Gender}"/>
                            </StackPanel>
                            <StackPanel Name="stkpnlVictimDob" Grid.Row="0" Grid.Column="7">
                                <TextBlock>DOB</TextBlock>
                                <TextBox Name="VictimDOB" IsEnabled="True"
                                            FontWeight="Bold" VerticalAlignment="Center"
                                            Text="{Binding DOB}"/>
                            </StackPanel>
                        </Grid> <!-- Victims -->
                        <Grid Grid.Row="1"  Grid.Column="0" Grid.ColumnSpan="2">
                            <Grid Name="AddDeleteVictim">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                    <ColumnDefinition/>
                                </Grid.ColumnDefinitions>
                                <StackPanel Grid.Column="0" Grid.ColumnSpan="2">
                                    <TextBlock>RELATIONSHIP</TextBlock>
                                    <ComboBox Name="Relationship" Height="40" FontWeight="Bold"
                                        DisplayMemberPath="Description" SelectedValuePath="Code"
                                        SelectedValue="{Binding Path=Form104CModel.SelectedRelationship, Mode=TwoWay}">
                                        <ComboBox.ItemsSource>
                                            <CompositeCollection>
                                                <domain:Enumeration Code="" Description="" />
                                                <CollectionContainer Collection="{Binding Source={x:Static infraData:CodeCache.VictimSuspectRelationship}}" />
                                            </CompositeCollection>
                                        </ComboBox.ItemsSource>
                                    </ComboBox>
                                </StackPanel>
                                <Button Grid.Column="3" Grid.ColumnSpan="1" BorderBrush="Black" FontSize="12" BorderThickness="1,1,1,1"
                                        Content="Delete Victim" Background="LightGray" Name="btnDeleteVictim" Visibility=""
                                        Command="{Binding Form104CModel.DeleteOtherVictimCommand}" Height="50"/>
                            </Grid>
                        </Grid> <!-- Relationship/Delete Victim Button -->
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
wpf listbox
1个回答
0
投票

对于试图回答这个问题的任何人,我想我自己都想通了。我无法真正解释它,但我认为它可以归结为Listbox数据模板比所需的更为复杂。我怀疑一个人不应该将网格作为数据模板中的父对象。这是经过重新设计的:

© www.soinside.com 2019 - 2024. All rights reserved.