or
<DataTemplate x:Key="HeaderTemplate"> <StackPanel Orientation="Horizontal"> <Image Margin="0,0,3,0" Source="{Binding Screen.IconSource}" Width="16" Height="16""/> <TextBlock Text="{Binding Screen.Title}"/> </StackPanel></DataTemplate><Style TargetType="{x:Type Controls:RadPane}"> <Setter Property="HeaderTemplate" Value="{StaticResource HeaderTemplate}"/> <Setter Property="TitleTemplate" Value="{StaticResource HeaderTemplate}"/></Style>public class ScreenViewModel{ public ScreenViewModel(IScreen screen) { Screen = screen; } public IScreen Screen { get; private set; } private RadPane _pane;
//this property is set in DockingPanesFactory.CreatePaneForItem method
public RadPane Pane { get { return _pane; } set { _pane = value; _pane.Content = Screen.View; _pane.Header = this; RadDocking.SetSerializationTag(_pane, Screen.ContentId); } }//+some other irrelevant properties}//this is my modelinterface IScreen{ UIElement View { get; } string Title { get; } string ContentId { get; } ImageSource IconSource { get; }}public ObservableCollection<ScreenViewModel> Screens { get; set; } public void Load(string file, IScreenFactory screenFactory){ if (!File.Exists(file)) return; Screens.Clear(); using (var fs = File.OpenRead(file)) { var doc = XDocument.Load(fs); foreach (var screenId in doc.Descendants("RadPane").Select(x => x.Attribute("SerializationTag").Value)) { //some factory wich creates models by their IDs IScreen screen = screenFactory.RestoreScreen(screenId); Screens.Add(new ScreenViewModel(screen)); } if (Screens.Any()) { fs.Position = 0; //after this call all template the bindings break _radDocking.LoadLayout(fs); } }}
<Style x:Key="myCellStyle" TargetType="{x:Type telerik:GridViewCell}"> <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource myConverter}}" /> </Style>public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { GridViewCell cell = (GridViewCell)value;
if(cell.Value == null)
return true;
else
return (bool)cell.Value; }private void grid_DataLoaded(object sender, EventArgs e) { foreach (Telerik.Windows.Controls.GridViewColumn col in gridCheck.Columns) { col.CellStyle = (Style)this.Resources["myCellStyle"]; } }