<Window x:Class="WpfApplication1.Window1" |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
Title="Window1" Height="313" Width="420" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" WindowStyle="ThreeDBorderWindow" SizeToContent="Manual"> |
<Grid> |
<Grid.Resources> |
</Grid.Resources> |
<telerik:RadGridView |
Name="radGridView1" |
AllowDrop="False" |
ColumnsWidthMode="Auto" |
AutoGenerateColumns="False" > |
<telerik:RadGridView.Columns> |
<telerik:GridViewDataColumn |
HeaderText="Name" |
DataMemberBinding="{Binding Path=Name, Mode=OneWay}"/> |
<telerik:GridViewDataColumn |
HeaderText="HostName" |
DataMemberBinding="{Binding Path=HostName, Mode=OneWay}" /> |
<telerik:GridViewDataColumn |
HeaderText="Type" |
DataMemberBinding="{Binding Path=Type, Mode=OneWay}" /> |
<telerik:GridViewDataColumn |
HeaderText="Domain" |
DataMemberBinding="{Binding Path=Domain, Mode=OneWay}" /> |
</telerik:RadGridView.Columns> |
</telerik:RadGridView> |
</Grid> |
</Window> |
public partial class Window1 : Window |
{ |
Browser browser; |
BindingList<OtogramService> servicesBindingList = new BindingList<OtogramService>(); |
public Window1() |
{ |
InitializeComponent(); |
// Create the browser |
browser = new Browser("_http._tcp"); |
// Hook the Updated event. |
browser.Updated += new Browser.EventHandler(browser_Updated); |
//create the relationship |
var detailDefinition = new Telerik.Windows.Controls.GridViewTableDefinition(); |
detailDefinition.Relation = new Telerik.Windows.Data.PropertyRelation("Addresses"); |
radGridView1.TableDefinition.ChildTableDefinitions.Add(detailDefinition); |
radGridView1.ItemsSource = servicesBindingList; |
} |
void browser_Updated2(Browser sender, OtogramBrowserEventArgs e) |
{ |
switch (e.otogramBrowserEvent) |
{ |
// note - it is possible to get an Updated* event |
// before the Add event. |
case OtogramService.Event.UpdatedAddress: |
case OtogramService.Event.UpdatedTextRecord: |
case OtogramService.Event.Add: |
{ |
try |
{ |
// if we have one just update it |
var z = (from p in servicesBindingList where p.Name == e.otogramService.Name select p).Single(); |
z = e.otogramService; |
} |
catch |
{ |
// if we don't have one already - add a new one. |
servicesBindingList.Add(e.otogramService); |
} |
} |
break; |
case OtogramService.Event.Remove: |
{ |
// if we have one - remove it. |
var z = from p in servicesBindingList where p.Name == e.otogramService.Name select p; |
if (z.Count() != 0) |
{ |
servicesBindingList.Remove(z.First()); |
} |
} |
break; |
} |
} |
private delegate void UpdateBrowser(Browser sender, OtogramBrowserEventArgs e); |
// required because WPF must execute one on one thread. |
// This puts the callback into the WPF thread's dispatch queue. |
void browser_Updated(Browser sender, OtogramBrowserEventArgs e) |
{ |
UpdateBrowser func = browser_Updated2; |
this.Dispatcher.BeginInvoke(func, new object[] { sender, e }); |
} |
} |
WPF version = .Net 3.5 SP1
OS = XP SP3
exact version of the Telerik product = 2009 Q2 SP1 (2009.2.813.35)
Step by step instructions on how to reproduce erroneous behavior.
1. select cell in RadGridView and the row selector moves to that row and the row is highlighted.
2. edit cell
3. select a cell in a different row and the row selector doesn't move and neither row, previous nor current, are highlighted.
4. select a cell in a different row and the row selector moves to that row and the row is highlighted.
It appears that if a cell is edited it prevents the current row to be set to the row of the next current cell.
For example:
1. Edit cell.
2. Select a cell in a different row.
3. Hit Up arrow on keyboard.
4. The selected row becomes the row above the row selected in step 1.
'/Telerik.Windows.Controls;Component\Themes\GenericVista.xaml' value cannot be assigned to property 'Source' of object 'System.Windows.ResourceDictionary'. Cannot locate resource 'themes/genericvista.xaml'. Error at object 'System.Windows.ResourceDictionary'.