[重写一下问题,对我正在尝试做的事情有点清楚]
希望有人可以帮助我,因为我一直在追尾几个小时。试图掌握WPF作为GUI输出反映了我正在寻找的比WinForms更多。
我有3个控件:
组合框
Checklistbox
的Datagrid
我有一个数据集,其数据集设置了我需要查询结果的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)然后填充两个终端名称在数据网格中不返回任何内容。我无法理解,即使没有过滤器,datagrid也会返回每个其他选择的结果。 (检查了我的表格并测试了一些查询,但似乎不是表格数据)。
我在我的代码中尝试了这个:
public ObservableCollection<CheckedItem> List { get; set; }
public class CheckedItem
{
public bool Selected { get; set; }
public string Description { get; set; }
}
但是我还需要定义checkboxlist的DisplayMemberName,否则它将无法返回正确的值。这里的问题是我无法同时在XAML中使用项目列表。
无论如何花了6个小时试图完成这项工作并且绝望地失败了。非常感谢任何方向或帮助。
使用VS2010 WPF .net 4。