
Hi
In my application each thread is implemented in its own thread like:
public void OpenPartViewer(AbstractPart part) { Thread newWindowThread = new Thread(new ThreadStart(ThreadStartingPoint)); newWindowThread.SetApartmentState(ApartmentState.STA); newWindowThread.IsBackground = true; newWindowThread.Start(); part_ = part; } private void ThreadStartingPoint() { // Create a new window PartViewerMainWindow win = new PartViewerMainWindow(part_); win.Closed += (sender1, e1) => win.Dispatcher.InvokeShutdown(); win.Show(); // Start the new window's Dispatcher System.Windows.Threading.Dispatcher.Run(); }In one of the dialogs I previously used a ContentControl which I now want to replace with a RadTransitionControl like the above.
<telerik:RadTransitionControl x:Name="PartViewerContent" Grid.Column="1" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Content="{Binding ElementName=TreeView, Path=SelectedItem}" ContentTemplateSelector="{StaticResource PartViewerContentSelector}"> </telerik:RadTransitionControl>But after changing to RadTransitionControl I get an error when I change selection in the treeview:
The calling thread cannot access this object because a different thread owns it
I asume it is raised because the transitions is rendered in the main thead but I don't know. And more important. Can I do some magic to make it work.
Dim pagedSource = New QueryableCollectionView(GetDataTable().AsEnumerable.ToList)
Me.radDataPager.Source = pagedSource
Me.radGridView.ItemsSource = pagedSource
XAML
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center"
Margin="0,5,0,0">
<telerik:RadButton
Width="150"
Content="Add new row"
Margin="0,0,5,0"
Command="telerikGrid:RadGridViewCommands.BeginInsert"
CommandTarget="{Binding ElementName=RadGridView}" />
</StackPanel>
<telerik:RadDataPager
x:Name="radDataPager"
PageSize="10"
DisplayMode="All"
IsTotalItemCountFixed="false"
VerticalContentAlignment="Bottom"
</telerik:RadDataPager>
<telerik:RadGridView
x:Name="radGridView"
ItemsSource="{Binding PagedSource, ElementName=radDataPager}"
VerticalAlignment="Top"
CanUserDeleteRows="False"
CanUserInsertRows="True"
CanUserReorderColumns="False"
ShowGroupPanel="False"
AutoGenerateColumns="False"
ShowInsertRow="True">
</telerik:RadGridView>
For Each fds As FilterDescriptorSetting In setting.SelectedDistinctValues Dim fd As New Telerik.Windows.Data.FilterDescriptor() fd.Member = fds.Member fd.[Operator] = fds.[Operator] fd.Value = fds.Value cfd.DistinctFilter.FilterDescriptors.Add(fd)NextMe.grid.FilterDescriptors.Add(cfd)<Window x:Class="DBAppBestPractice.MainWindow" xmlns:Examples="clr-namespace:DBAppBestPractice" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:telerikGrid="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView" x:Name="root" DataContext="{Binding Main, Source={StaticResource Locator}}" > <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Skins/MainSkin.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition /> </Grid.RowDefinitions> <Border Grid.RowSpan="2" /> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,5,0,0"> <telerik:RadButton Width="150" Content="Delete selected rows" Margin="0,0,5,0" Command="telerikGrid:RadGridViewCommands.Delete" CommandTarget="{Binding ElementName=RadGridView1}" /> <telerik:RadButton Width="150" Content="Add new row" Margin="0,0,5,0" Command="telerikGrid:RadGridViewCommands.BeginInsert" CommandTarget="{Binding ElementName=RadGridView1}" /> <telerik:RadButton Width="150" Content="Save insert/edit" Margin="0,0,5,0" Command="telerikGrid:RadGridViewCommands.CommitEdit" CommandTarget="{Binding ElementName=RadGridView1}" /> <telerik:RadButton Width="150" Content="Cancel insert/edit" Command="telerikGrid:RadGridViewCommands.CancelRowEdit" CommandTarget="{Binding ElementName=RadGridView1}" /> </StackPanel> <telerik:RadGridView x:Name="RadGridView1" ItemsSource="{Binding LoadedSuppliers}" SelectionMode="Extended" AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="1" ActionOnLostFocus="None" RowEditEnded="RadGridView1_RowEditEnded" Deleted="RadGridView1_Deleted"> <telerik:RadGridView.Columns> <telerik:GridViewColumn> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <telerik:RadButton Content="Delete" Command="telerikGrid:RadGridViewCommands.Delete" CommandParameter="{Binding}" /> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewColumn> <telerik:GridViewDataColumn DataMemberBinding="{Binding Id}" Header="Id" IsReadOnly="True" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" Header="Name" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description" /> </telerik:RadGridView.Columns> </telerik:RadGridView> </Grid></Window><telerik:RadGridView x:Name="CodeRadGrid" IsReadOnly="False" AutoGenerateColumns="False" SelectionMode="Extended" telerik:StyleManager.Theme="Office_Blue"ItemsSource="{Binding PagedSource, ElementName=ctlDataPager}" ShowInsertRow="True" AddingNewDataItem="CodeRadGrid_AddingNewDataItem"RowEditEnded="CodeRadGrid_RowEditEnded" ><telerik:RadGridView.Columns> <telerik:GridViewSelectColumn /> <telerik:GridViewDataColumn DataMemberBinding="{Binding aCode}" Header="A Code"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding bCode}" Header="B Code"> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView> <telerik:RadDataPager x:Name="RadDataPager" PageSize="7" DisplayMode="First, Last, Next, Previous, Text" IsTotalItemCountFixed="True" />private void CodeRadGrid_AddingNewDataItem(object sender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e){ e.NewObject = new CodeObj();}private void CodeRadGrid_RowEditEnded(object sender, GridViewRowEditEndedEventArgs e){ if (e.EditAction == GridViewEditAction.Cancel) { return; } if (e.EditOperationType == GridViewEditOperationType.Insert) { ((List<CodeObj>)this.RadDataPager.Source).Add( (CodeObj) e.NewData); }} <telerik:RadGridView x:Name="Search_RadDG" Margin="5,0"
ItemsSource="{Binding SearchResults}"
SelectionUnit="FullRow"
>
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header="Add Candidate" >
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Content="Add" Click="RadButton_Click" />
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
VB
Dim btn As Telerik.Windows.Controls.RadButton
btn = CType(sender, Telerik.Windows.Controls.RadButton)
Dim cell As Telerik.Windows.Controls.GridView.GridViewCell
cell = btn.Parent()
Dim row As Telerik.Windows.Controls.GridView.GridViewRow
row = cell.Parent()
If row IsNot Nothing Then This is always nothing
row.IsSelected = True
Dim can As FoundVoters
Dim sOffice As String = Nothing
can = Search_RadDG.CurrentItem
Dim wcf As New WCF_CommonDataContracts.DataCommon_WCF.WCF_Exception
With can
wcf = DistrictData.Candidate_New(StateCbx.SelectedItem, Countylbx2.SelectedItem, DistType_lbx.SelectedItem,
ParseDistrictCode(Districts_lbx.SelectedItem), SubDistricts_cbx.SelectedItem, .Voter_id,
EDate_DP.SelectedDate, 4, sOffice)
End With
Candidate_List_Set()
End If