Hello,
I have a class “Priority” which derives from the Category class and fires PropertyChanged when (New) CategoryBrush changes.
I assign the collection of Priority objects to the CategoriesSource property of the ScheduleView control.
The Edit window loads the list fine, but when the brush color of the Category aka Priority changes in the configuration window - the Edit window doesn’t reflect the change. Other controls bound to the CategoryBrush property of the same collection change the color but not the ScheduleView.
Can you see why?
Thank you.
Hi,
I have just started my adventure with WPF. I have heard that it is dedicated for graphical applications. I'm interested in creating a control that handles linear chart and transform it into chart in a circle. I just wonder if there is some easy way to do that?
Thank you in advance for any reply.
<telerik:RadGridView ItemsSource="{Binding Path=NotesList}" AutoGenerateColumns="False"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="ID" DataMemberBinding="{Binding Path=ID}" /> <telerik:GridViewComboBoxColumn Header="NoteType" UniqueName="NoteType" ItemsSource="{Binding Path=NoteTypeList}" DataMemberBinding="{Binding Path=NoteTypeID}" SelectedValueMemberPath="ID" DisplayMemberPath="Name"> </telerik:GridViewComboBoxColumn> <telerik:GridViewComboBoxColumn Header="NoteSubType" ItemsSource="{???}" DataMemberBinding="{Binding Path=NoteSubTypeID}" SelectedValueMemberPath="ID" DisplayMemberPath="Name"> </telerik:GridViewComboBoxColumn> </telerik:RadGridView.Columns> </telerik:RadGridView>
public
class
TSplitContainer : RadSplitContainer { }
public
class
TPaneGroup : RadPaneGroup { }
public
class
TPane : RadPane { }
d =
new
TDocking();
//d.CurrentSaveLoadLayoutHelper = new TDefaultSaveLoadLayoutHelper(d);
d.GeneratedItemsFactory =
new
TDefaultGeneratedItemsFactory();
public
class
TDocking: RadDocking
{
protected
override
void
OnElementLoading(LayoutSerializationLoadingEventArgs args)
{
System.Windows.DependencyObject res = args.AffectedElement;
if
(res ==
null
)
{
string
st = args.AffectedElementSerializationTag;
if
(st ==
typeof
(TDocking).Name)
args.SetAffectedElement(
this
);
if
(st ==
typeof
(TDocumentPane).Name)
args.SetAffectedElement(
new
TDocumentPane());
if
(st ==
typeof
(TPaneGroup).Name)
args.SetAffectedElement(GeneratedItemsFactory.CreatePaneGroup());
if
(st ==
typeof
(TSplitContainer).Name)
}
System.Diagnostics.Debug.WriteLine(
"OnElementLoading: serializationTag={0}; res={1}"
, args.AffectedElementSerializationTag, res);
base
.OnElementLoading(args);
}
}
public
class
TDefaultGeneratedItemsFactory: DefaultGeneratedItemsFactory
{
public
override
Telerik.Windows.Controls.RadPaneGroup CreatePaneGroup()
{
return
new
TPaneGroup();
}
public
override
Telerik.Windows.Controls.RadSplitContainer CreateSplitContainer()
{
return
new
TSplitContainer();
}
public
override
ToolWindow CreateToolWindow()
{
return
base
.CreateToolWindow();
}
}
d =
new
TDocking();
//d.CurrentSaveLoadLayoutHelper = new TDefaultSaveLoadLayoutHelper(d);
d.GeneratedItemsFactory =
new
TDefaultGeneratedItemsFactory();
TSplitContainer sc =
new
TSplitContainer();
d.Items.Add(sc);
TDocking.SetSerializationTag(sc,
"TSplitContainer"
);
sc.InitialPosition = Telerik.Windows.Controls.Docking.DockState.DockedRight;
TPaneGroup pg =
new
TPaneGroup();
TDocking.SetSerializationTag(pg,
"TPaneGroup"
);
sc.Items.Add(pg);
TPane pane =
new
TPane();
TDocking.SetSerializationTag(pane,
"TPane"
);
pg.Items.Add(pane);
d1.LoadLayout(xml);
public
DependencyObject LoadSplitItem(XmlReader reader)
{
if
(reader.Name ==
"RadSplitContainer"
)
{
return
this
.LoadSplitContainer(reader);
}
if
(reader.Name ==
"RadPaneGroup"
)
{
return
this
.LoadPaneGroup(reader);
}
return
null
;
}
public
class
MyViewModel : INotifyPropertyChanged
{
public
event
PropertyChangedEventHandler PropertyChanged;
private
ObservableCollection<Club> clubs;
private
ObservableCollection<Player> players;
private
object
selectedItem;
public
ObservableCollection<Club> Clubs
{
get
{
if
(
this
.clubs ==
null
)
{
this
.clubs = Club.GetClubs();
}
return
this
.clubs;
}
}
public
ObservableCollection<Player> Players
{
get
{
if
(
this
.players ==
null
)
{
this
.players = Player.GetPlayers();
}
return
this
.players;
}
}
public
object
SelectedItem
{
get
{
return
this
.selectedItem; }
set
{
if
(value !=
this
.selectedItem)
{
this
.selectedItem = value;
this
.OnPropertyChanged(
"SelectedItem"
);
}
}
}
protected
virtual
void
OnPropertyChanged(PropertyChangedEventArgs args)
{
PropertyChangedEventHandler handler =
this
.PropertyChanged;
if
(handler !=
null
)
{
handler(
this
, args);
}
}
private
void
OnPropertyChanged(
string
propertyName)
{
this
.OnPropertyChanged(
new
PropertyChangedEventArgs(propertyName));
}
}
}
namespace
LoadRowDetails
{
/// <summary>
/// A football club.
/// </summary>
public
class
Club : INotifyPropertyChanged
{
public
event
PropertyChangedEventHandler PropertyChanged;
private
string
name;
private
DateTime established;
private
int
stadiumCapacity;
private
ObservableCollection<Player> players;
public
string
Name
{
get
{
return
this
.name; }
set
{
if
(value !=
this
.name)
{
this
.name = value;
this
.OnPropertyChanged(
"Name"
);
}
}
}
public
DateTime Established
{
get
{
return
this
.established; }
set
{
if
(value !=
this
.established)
{
this
.established = value;
this
.OnPropertyChanged(
"Established"
);
}
}
}
public
int
StadiumCapacity
{
get
{
return
this
.stadiumCapacity; }
set
{
if
(value !=
this
.stadiumCapacity)
{
this
.stadiumCapacity = value;
this
.OnPropertyChanged(
"StadiumCapacity"
);
}
}
}
public
ObservableCollection<Player> Players
{
get
{
if
(
null
==
this
.players)
{
this
.players =
new
ObservableCollection<Player>();
}
return
this
.players;
}
}
public
Club()
{
}
public
Club(
string
name, DateTime established,
int
stadiumCapacity)
{
this
.name = name;
this
.established = established;
this
.stadiumCapacity = stadiumCapacity;
}
public
Club(
string
name, DateTime established,
int
stadiumCapacity, ObservableCollection<Player> players)
:
this
(name, established, stadiumCapacity)
{
this
.players = players;
}
protected
virtual
void
OnPropertyChanged(PropertyChangedEventArgs args)
{
PropertyChangedEventHandler handler =
this
.PropertyChanged;
if
(handler !=
null
)
{
handler(
this
, args);
}
}
private
void
OnPropertyChanged(
string
propertyName)
{
this
.OnPropertyChanged(
new
PropertyChangedEventArgs(propertyName));
}
public
override
string
ToString()
{
return
this
.Name;
}
public
static
ObservableCollection<Club> GetClubs()
{
ObservableCollection<Club> clubs =
new
ObservableCollection<Club>();
Club club;
// Liverpool
//club = parent_order
//club.OrderChain.Add
club =
new
Club(
"Liverpool"
,
new
DateTime(1892, 1, 1), 45362);
club.Players.Add(
new
Player(
"Pepe Reina"
, 25, Position.GK,
"Spain"
));
club.Players.Add(
new
Player(
"Jamie Carragher"
, 23, Position.DF,
"England"
));
club.Players.Add(
new
Player(
"Steven Gerrard"
, 8, Position.MF,
"England"
));
club.Players.Add(
new
Player(
"Fernando Torres"
, 9, Position.FW,
"Spain"
));
clubs.Add(club);
// Manchester Utd.
club =
new
Club(
"Manchester Utd."
,
new
DateTime(1878, 1, 1), 76212);
club.Players.Add(
new
Player(
"Edwin van der Sar"
, 1, Position.GK,
"Netherlands"
));
club.Players.Add(
new
Player(
"Rio Ferdinand"
, 5, Position.DF,
"England"
));
club.Players.Add(
new
Player(
"Ryan Giggs"
, 11, Position.MF,
"Wales"
));
club.Players.Add(
new
Player(
"Wayne Rooney"
, 10, Position.FW,
"England"
));
clubs.Add(club);
// Chelsea
club =
new
Club(
"Chelsea"
,
new
DateTime(1905, 1, 1), 42055);
club.Players.Add(
new
Player(
"Petr Čech"
, 1, Position.GK,
"Czech Republic"
));
club.Players.Add(
new
Player(
"John Terry"
, 26, Position.DF,
"England"
));
club.Players.Add(
new
Player(
"Frank Lampard"
, 8, Position.MF,
"England"
));
club.Players.Add(
new
Player(
"Nicolas Anelka"
, 39, Position.FW,
"France"
));
clubs.Add(club);
// Arsenal
club =
new
Club(
"Arsenal"
,
new
DateTime(1886, 1, 1), 60355);
club.Players.Add(
new
Player(
"Manuel Almunia"
, 1, Position.GK,
"Spain"
));
club.Players.Add(
new
Player(
"Gaël Clichy"
, 22, Position.DF,
"France"
));
club.Players.Add(
new
Player(
"Cesc Fàbregas"
, 4, Position.MF,
"Spain"
));
club.Players.Add(
new
Player(
"Robin van Persie"
, 11, Position.FW,
"Netherlands"
));
clubs.Add(club);
return
clubs;
}
}
}
...
<
Grid
DataContext
=
"{Binding}"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"*"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
telerik:RadGridView
Grid.Row
=
"0"
Name
=
"orderGrid"
ItemsSource
=
"{Binding Order_View, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem
=
"True"
AutoGenerateColumns
=
"False"
Margin
=
"5"
>
<
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:GridViewTableDefinition
/>
</
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewColumn
Header
=
"Priority"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Height
=
"20"
Source
=
"{Binding PriorityImage}"
/>
<
TextBlock
Text
=
"{Binding OrderPriorityShortcut}"
Margin
=
"1.2"
/>
</
StackPanel
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<
telerik:GridViewColumn
Header
=
"Transport"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Height
=
"20"
Source
=
"{Binding TransportImage}"
/>
<
TextBlock
Text
=
"{Binding TransportTypeShortcut}"
Margin
=
"1.2"
/>
</
StackPanel
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding TransportWay}"
Header
=
"Transport Art"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Device}"
Header
=
"Endgerät"
IsReadOnly
=
"True"
DataContext
=
"{Binding}"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding PickUpTime}"
Header
=
"Abholung"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding ArrivalTime}"
Header
=
"Ankunft"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding OrganisationUnitFrom}"
Header
=
"Von"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding OrganisationUnitTo}"
Header
=
"Nach"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding PatientName}"
Header
=
"Name"
IsReadOnly
=
"True"
/>
<
telerik:GridViewCheckBoxColumn
DataMemberBinding
=
"{Binding IsInfectious}"
Header
=
"Infektiös"
/>
</
telerik:RadGridView.Columns
>
<
telerik:RadGridView.HierarchyChildTemplate
>
<
DataTemplate
>
<
telerik:RadGridView
Name
=
"orderChainGrid"
Loaded
=
"orderChain_Loaded"
ItemsSource
=
"{Binding ChainOrders}"
AutoGenerateColumns
=
"False"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewColumn
Header
=
"Priority"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Height
=
"20"
Source
=
"{Binding PriorityImage}"
/>
<
TextBlock
Text
=
"{Binding OrderPriorityShortcut}"
Margin
=
"1.2"
/>
</
StackPanel
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<
telerik:GridViewColumn
Header
=
"Transport"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Height
=
"20"
Source
=
"{Binding TransportImage}"
/>
<
TextBlock
Text
=
"{Binding TransportTypeShortcut}"
Margin
=
"1.2"
/>
</
StackPanel
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding TransportWay}"
Header
=
"Transport Art"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Device}"
Header
=
"Endgerät"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding PickUpTime}"
Header
=
"Abholung"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding ArrivalTime}"
Header
=
"Ankunft"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding OrganisationUnitFrom}"
Header
=
"Von"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding OrganisationUnitTo}"
Header
=
"Nach"
IsReadOnly
=
"True"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding PatientName}"
Header
=
"Name"
IsReadOnly
=
"True"
/>
<
telerik:GridViewCheckBoxColumn
DataMemberBinding
=
"{Binding IsInfectious}"
Header
=
"Infektiös"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
DataTemplate
>
</
telerik:RadGridView.HierarchyChildTemplate
>
this
.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal,
(UpdateGrid)
delegate
(List<OrderView> ocov)
{
this
.orderGrid.ItemsSource = ov.DisplayOrders(
ref
ocov);
}, e.Result);