1

[重新写了这个问题,以便更清楚地了解我正在尝试做什么]

希望有人可以帮助我,因为我已经追了几个小时了。试图掌握 WPF,因为 GUI 输出反映了我所寻找的不仅仅是 WinForms。

我有 3 个控件:

组合框

清单框

数据网格

我有一个数据表,其中设置了我需要查询结果的 3 个表之间的关系。这是我的 XAML。

 <xctk:CheckListBox DataContext="{Binding Path=NAME, UpdateSourceTrigger=PropertyChanged, Source={StaticResource _Regions__Terminal_ViewSource}}" ItemsSource="{Binding Source={StaticResource _Regions__Terminal_ViewSource}}" Margin="17,108,13,71" Name="clb_Terminals" SelectedItems="{Binding}" SelectedMemberPath="IsSelected" SelectedValue="{Binding Path=SelectedValue}" ValueMemberPath="Level" DisplayMemberPath="NAME" />
                        <Button Content="Refresh Forecast View" Height="48" HorizontalAlignment="Left" Margin="17,288,0,0" Name="button1" VerticalAlignment="Top" Width="220" />
                        <ComboBox DisplayMemberPath="GROUPNAME" Height="23" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource _Regions_ViewSource}}" Margin="22,52,0,0" Name="_Regions_ComboBox" SelectedValuePath="GROUPNUM" VerticalAlignment="Top" Width="215">
                            <ComboBox.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <VirtualizingStackPanel />
                                </ItemsPanelTemplate>
                            </ComboBox.ItemsPanel>
                        </ComboBox>
                    </Grid>
                </TabItem>
                <TabItem Header="Advanced" Name="tabItem2">
                    <Grid />
                </TabItem>
            </TabControl>
            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="380" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource _Regions__Terminal_GridViewViewSource}}" Margin="297,15,0,0" Name="gridViewDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="1148" DataContext="{Binding}" GridLinesVisibility="None">
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="sTATNUMColumn" Binding="{Binding Path=STATNUM}" Header="STATNUM" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="jDEColumn" Binding="{Binding Path=JDE}" Header="JDE" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="cONTRACTColumn" Binding="{Binding Path=CONTRACT}" Header="CONTRACT" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="sTATIONNAMEColumn" Binding="{Binding Path=STATIONNAME}" Header="STATIONNAME" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="tOWNColumn" Binding="{Binding Path=TOWN}" Header="TOWN" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="tRIPTIMEColumn" Binding="{Binding Path=TRIPTIME}" Header="TRIPTIME" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="tERMINALColumn" Binding="{Binding Path=TERMINAL}" Header="TERMINAL" IsReadOnly="True" Width="*" />
                    <DataGridTextColumn x:Name="mAXSIZEColumn" Binding="{Binding Path=MAXSIZE}" Header="MAXSIZE" IsReadOnly="True" Width="*" />
                </DataGrid.Columns>
            </DataGrid>

到目前为止,这 3 个控件是通过父/子关系绑定的,但它并没有像我希望的那样工作,而且我有点超出我的深度。

我从组合框中选择我的区域,该组合框成功地用相应的终端填充了我的复选框。接下来我需要做的是,当检查每个终端时,它会过滤我的数据网格上的终端列,以仅显示与勾选的终端匹配的相应记录集。

我似乎也有一个奇怪的问题,默认组合框选择 (region1) 然后填充两个终端名称,在数据网格中没有返回任何内容。这我无法理解,因为即使没有过滤器,数据网格也会为其他所有选择返回结果。(检查了我的表格并测试了一些查询,但似乎不是表格数据)。

我在后面的代码中尝试了这个:

 public ObservableCollection<CheckedItem> List { get; set; }

    public class CheckedItem
    {
        public bool Selected { get; set; }
        public string Description { get; set; }
    }

但是,我还需要定义复选框列表的 DisplayMemberName,否则它无法返回正确的值。这里的问题是我不能同时在 XAML 中使用项目列表。

无论如何,花了 6 个小时试图完成这项工作,却无可救药地迷失了方向。非常感谢任何方向或帮助。

使用 VS2010 WPF .net 4。

4

0 回答 0