I have an application that loads data from an XML file. The data sections are tab controlled and separated by folders. Each folder is a different "site" with it's OWN xml file. The application only loads data when I select a "site"
and only THAT site's data is loaded. The problem is that ALL the data loads at the same time. I want the data to load based on the tab. So when I click the "General" tab only the "General" data is loaded and so forth.
How do I accomplish this?
XAML
<Grid x:Name="grdTabControl" DockPanel.Dock="Right"><TabControl Margin="0,5,5,3" Style="{StaticResource ResourceKey= TabControlStyle}"><TabItem x:Name="tbiGeneral" Header="General" IsSelected="True" Style="{StaticResource ResourceKey= TabItemStyle}"><DockPanel><StackPanel DockPanel.Dock="Top"><Border Style="{StaticResource ResourceKey= BorderStyle}"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid x:Name="grdGeneralTab" Style="{StaticResource ResourceKey=GridStyle}"><Grid.ColumnDefinitions><ColumnDefinition Width="auto" /><ColumnDefinition Width="auto" /></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /></Grid.RowDefinitions><Grid.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Grid.Effect><Label x:Name="lblFacilityName" Content="Facility Name" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtFacilityName" Grid.Column="1" Margin="5,5,0,5" Width="129" Foreground="Black" HorizontalAlignment="Left" TextChanged="txbFacilityName_TextChanged" Text="{Binding ConfigFile.FacilityName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /><Label x:Name="lblFacility" Content="Facility" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtFacility" Grid.Column="1" Grid.Row="1" Width="129" Margin="5,5,0,5" HorizontalAlignment="Left" TextChanged="txbFacility_TextChanged" Text="{Binding ConfigFile.Facility, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /><Label x:Name="lblStatus" Content="Status" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><StackPanel Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions><RadioButton x:Name="rdbStatusOn" GroupName="Status" Margin="2,0,5,0" HorizontalAlignment="Left" Grid.Column="0" IsChecked="{Binding ConfigFile.ApplicationStatus, Converter={local:StatusStringToBooleanConverter}}" Click="rdbStatusOn_CheckChange">ONLINE</RadioButton><RadioButton x:Name="rdbStatusOff" GroupName="Status" Margin="5, 0, 0, 2" HorizontalAlignment="Right" Grid.Column="1" IsChecked="{Binding ConfigFile.ApplicationStatus, Converter={local:StatusStringToBooleanConverter}, ConverterParameter=1}" Click="rdbStatusOff_CheckChange">OFFLINE</RadioButton></Grid></StackPanel><Label x:Name="lblTimeout" Content="Timeout" Grid.Column="0" Grid.Row="3" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtTimeout" Grid.Column="1" Grid.Row="3" Width="129" Margin="5,5,0,5" HorizontalAlignment="Left" TextChanged="txbTimeout_TextChanged" Text="{Binding ConfigFile.QueryTimeout, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /><Label x:Name="lblRefreshInterval" Content="Refresh Interval" Grid.Column="0" Grid.Row="4" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtRefreshInterval" Grid.Column="1" Grid.Row="4" Width="129" Margin="5,5,0,5" HorizontalAlignment="Left" TextChanged="txbRefreshInterval_TextChanged" Text="{Binding ConfigFile.RefreshInterval, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /></Grid></Border></StackPanel></DockPanel></TabItem><TabItem x:Name="tbiCategories" Header="Categories" Style="{StaticResource ResourceKey= TabItemStyle}"><DockPanel><Border Margin="5" Style="{StaticResource ResourceKey= BorderStyle}"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid Margin="5" HorizontalAlignment="Stretch" Style="{StaticResource ResourceKey=GridStyle}"><Grid.ColumnDefinitions><ColumnDefinition Width="184*" /><ColumnDefinition Width="107*"/><ColumnDefinition Width="auto" /><ColumnDefinition Width="290*" /></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="*" /></Grid.RowDefinitions><!--Categories ListBox--><Border Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="0" Margin="5" Style="{StaticResource ResourceKey= BorderStyle}"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid Margin="5"><Grid.RowDefinitions><RowDefinition Height="*" /><RowDefinition Height="auto" /><RowDefinition Height="*" /></Grid.RowDefinitions><Label Content="Categories" Grid.Row="0" Style="{StaticResource ResourceKey=categoryHeaderLabel}" /><ListBox x:Name="lbCategories" IsSynchronizedWithCurrentItem="True" Grid.Row="1" Height="100" Margin="5,5,5,0" DisplayMemberPath="description" ItemsSource="{Binding ConfigFile.OperationCategories, Mode=TwoWay}" SelectionChanged="lbCategories_SelectionChanged" Style="{StaticResource ResourceKey= CategoryListBoxStyle}"></ListBox><Button x:Name="btnAddCategories" Content="+" Grid.Row="2" HorizontalAlignment="Left" Style="{StaticResource ResourceKey=categoryAddRemoveButtons}" Click="btnAddCategories_Click"></Button><Button x:Name="btnRemoveCategories" Content="-" Grid.Row="2" HorizontalAlignment="Right" Style="{StaticResource ResourceKey=categoryAddRemoveButtons}" Click="btnRemoveCategories_Click"></Button></Grid></Border><!--Available Operations ListBox--><Border Grid.Column="0" Grid.Row="1" Margin="5" Style="{StaticResource ResourceKey= BorderStyle}" Grid.ColumnSpan="2"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="*" /></Grid.RowDefinitions><Label Content="Available Operations" Grid.Row="0" Style="{StaticResource ResourceKey=categoryHeaderLabel}" /><ListBox x:Name="lbAvailableOperations" Grid.Row="1" Margin="5" SelectionMode="Multiple" DisplayMemberPath="OPERATION_DESCRIPTION" ItemsSource="{Binding FilteredAvailableOperations}" Style="{StaticResource ResourceKey= CategoryListBoxStyle}"></ListBox></Grid></Border><!--Add/Remove Arrow Buttons--><StackPanel Grid.Column="2" Grid.Row="1" Width="25" Margin="5,62" VerticalAlignment="Center"><Button x:Name="addButton" Margin="0,5,0,5" Content=">" Style="{StaticResource ResourceKey=categoryArrowButtons}" Click="addButton_Click" /><Button x:Name="addButtonAll" Margin="0,5,0,5" Content=">>" Style="{StaticResource ResourceKey=categoryArrowButtons}" Click="addButtonAll_Click" /><Button x:Name="removeButton" Margin="0,5,0,5" Content="<" Style="{StaticResource ResourceKey=categoryArrowButtons}" Click="removeButton_Click" /><Button x:Name="removeButtonAll" Margin="0,5,0,5" Content="<<" Style="{StaticResource ResourceKey=categoryArrowButtons}" Click="removeButtonAll_Click" /></StackPanel><!--Assigned Categories ListBox--><Border Grid.Column="3" Grid.Row="1" Margin="5" Style="{StaticResource ResourceKey= BorderStyle}"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="131*" /><RowDefinition Height="52*" /></Grid.RowDefinitions><Label Content="Assigned Operations" Grid.Row="0" Style="{StaticResource ResourceKey=categoryHeaderLabel}" /><ListBox x:Name="lbAssignedOperations" Margin="5,5.4,5.4,5" Grid.Row="1" DisplayMemberPath="description" SelectedValuePath="id" ItemsSource="{Binding AssignedOperations}" Style="{StaticResource ResourceKey= CategoryListBoxStyle}" Grid.RowSpan="2"></ListBox></Grid></Border></Grid></Border></DockPanel></TabItem><!--Colors Tab--><TabItem x:Name="tbiColors" Header="Colors" Style="{StaticResource ResourceKey= TabItemStyle}"><DockPanel><StackPanel DockPanel.Dock="Top"><Border Style="{StaticResource ResourceKey= BorderStyle}"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="5" /></Border.Effect><Grid x:Name="grdColorTab" Style="{StaticResource ResourceKey=GridStyle}"><Grid.ColumnDefinitions><ColumnDefinition Width="auto" /><ColumnDefinition Width="auto" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="auto" /><RowDefinition Height="*" /></Grid.RowDefinitions><Label x:Name="lblNormal" Content="Normal" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtNormal" Grid.Column="1" Margin="5,5,0,5" Width="129" HorizontalAlignment="Left" Text="{Binding ConfigFile.NormalColor, Mode=TwoWay}" /><xtck:ColorPicker Grid.Column="2" Width="129" Margin="5" HorizontalAlignment="Left" SelectedColor="{Binding ConfigFile.NormalColor, Mode=TwoWay}" /><Label x:Name="lblBehindSchedule" Content="Behind Schedule" Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtBehindSchedule" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" Width="129" Margin="5,5,5,5" Text="{Binding ConfigFile.BehindColor, Mode=TwoWay}" /><xtck:ColorPicker Grid.Column="2" Grid.Row="1" Width="129" Margin="5" HorizontalAlignment="Left" SelectedColor="{Binding ConfigFile.BehindColor, Mode=TwoWay}" /><Label x:Name="lblOverdue" Content="Overdue" Grid.Column="0" Grid.Row="2" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtOverdue" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" Width="129" Margin="5,5,5,5" Text="{Binding ConfigFile.OverdueColor, Mode=TwoWay}" /><xtck:ColorPicker Grid.Column="2" Grid.Row="2" Width="129" Margin="5" HorizontalAlignment="Left" SelectedColor="{Binding ConfigFile.OverdueColor, Mode=TwoWay}" /><Label x:Name="lblHold" Content="Hold" Grid.Column="0" Grid.Row="3" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtHold" Grid.Column="1" Grid.Row="3" HorizontalAlignment="Left" Width="129" Margin="5,5,5,5" Text="{Binding ConfigFile.HoldColor, Mode=TwoWay}" /><xtck:ColorPicker Grid.Column="2" Grid.Row="3" Width="129" Margin="5" HorizontalAlignment="Left" SelectedColor="{Binding ConfigFile.HoldColor, Mode=TwoWay}" /><Label x:Name="lblDelay" Content="Delay" Grid.Column="0" Grid.Row="4" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtDelay" Grid.Column="1" Grid.Row="4" HorizontalAlignment="Left" Width="129" Margin="5,5,5,5" Text="{Binding ConfigFile.DelayColor, Mode=TwoWay}" /><xtck:ColorPicker Grid.Column="2" Grid.Row="4" Width="129" Margin="5" HorizontalAlignment="Left" SelectedColor="{Binding ConfigFile.DelayColor, Mode=TwoWay}" /><Label x:Name="lblBehindSchedulePercent" Content="Behind Schedule Percent" Grid.Column="0" Grid.Row="5" VerticalAlignment="Center" Style="{StaticResource ResourceKey=GeneralTable}" /><TextBox x:Name="txtBehindSchedulePercent" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Left" Width="129" Margin="5,5,5,5" Text="{Binding ConfigFile.LatePercentage, Mode=TwoWay}" /><Slider Grid.Column="2" Grid.Row="5" Width="129" Margin="5" Minimum="0" Maximum="100" HorizontalAlignment="Left" Interval="1" TickFrequency="1" IsSnapToTickEnabled="True" Value="{Binding ConfigFile.LatePercentage, Mode=TwoWay}" /></Grid></Border></StackPanel></DockPanel></TabItem></TabControl></Grid>
Code Behind
public partial class MainPage : Page { public MainPage() { InitializeComponent(); ViewModelMainPage dataContext = (ViewModelMainPage)this.DataContext; Loaded += fileLoad; //Register additional windows with the LoaderService class so they can be called from the ViewModel. ViewModelBase.LoaderService.Register(typeof(BulletinViewer), typeof(ViewModelBulletinViewer)); ViewModelBase.LoaderService.Register(typeof(AddCategoriesWindow), typeof(ViewModelAddCategoriesWindow)); } }
ViewModel Code
public class ViewModelMainPage : ViewModelBase { public void LoadConfigFile(object sender) { _isLoading = true; ListView myListView = (ListView)sender; Folder selectedItem = null; if (myListView.SelectedItem != null) { selectedItem = (Folder)myListView.SelectedItem; this.ConfigFile = new ApplicationPreferences(selectedItem.PathName); this.ConfigFile.Load(); LoadAvailableOperations(this.ConfigFile.Facility); LoadFilteredOperations(); UpdateOperationDescriptions(this.ConfigFile); } _isLoading = false; } }