Ok I have made alot of progress and almost there. One last question I hope. I have edited your example for the sake of answering my question.
I have created a column based on DataGridTypedColumn. The container is a custom control, MyUserControl, that is nothing more than a TextBlock. I would like to bind a property of my control to the column but I keep getting a XamlParseException. The radiobuttons should just toggle the textalignment from Left to Right. Thanks for all your help Nasko.
TelerikDataGridPage.xaml
<CODE>
<Page
x:Class="RadDataGridUWP_1400756.Views.TelerikDataGridPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Style="{StaticResource PageStyle}"
xmlns:tg="using:Telerik.UI.Xaml.Controls.Grid"
xmlns:model="using:RadDataGridUWP_1400756.Models"
xmlns:views="using:RadDataGridUWP_1400756.Views"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
mc:Ignorable="d">
<Page.Resources>
<views:MyConverter x:Key="MyConverter"/>
</Page.Resources>
<Grid
x:Name="ContentArea"
Margin="{StaticResource MediumLeftRightMargin}">
<Grid.RowDefinitions>
<RowDefinition Height="48"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
x:Uid="TelerikDataGrid_Title"
Style="{StaticResource PageTitleStyle}" />
<Grid
Grid.Row="1"
Background="{ThemeResource SystemControlPageBackgroundChromeLowBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<tg:RadDataGrid Grid.Row="0" ColumnDataOperationsMode="Flyout" x:Name="grid" ItemsSource="{x:Bind Source}" AutoGenerateColumns="False" >
<tg:RadDataGrid.Columns>
<tg:DataGridTextColumn PropertyName="OrderId" />
<tg:DataGridDateColumn PropertyName="OrderDate" />
<tg:DataGridTextColumn PropertyName="Company" />
<tg:DataGridTextColumn PropertyName="ShipTo" />
<tg:DataGridNumericalColumn PropertyName="OrderTotal" />
<views:MyTemplateColumn PropertyName="Status" LeftAlign="{Binding IsChecked, ElementName=LeftRadioButton}" />
</tg:RadDataGrid.Columns>
</tg:RadDataGrid>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
<RadioButton x:Name="LeftRadioButton" IsChecked="True" Margin="10,0,0,0" Content="Align Left" GroupName="align" />
<RadioButton Content="Align Right" GroupName="align" />
</StackPanel>
</Grid>
</Grid>
</Page>
</CODE>
MyTemplateColumn:
<CODE>
using RadDataGridUWP_1400756.Models;
using System;
using Telerik.UI.Xaml.Controls.Grid;
using Telerik.UI.Xaml.Controls.Grid.Primitives;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
namespace RadDataGridUWP_1400756.Views
{
public class MyTemplateColumn : DataGridTypedColumn
{
private static Type containerType = typeof(MyUserControl);
private MyUserControl _container;
public override object GetContainerType(object rowItem)
{
return containerType;
}
public override object GetEditorType(object item)
{
return containerType;
}
public override object CreateContainer(object rowItem)
{
_container = new MyUserControl();
return _container;
}
public override FrameworkElement CreateEditorContentVisual()
{
return null;
}
public override void PrepareCell(object container, object value, object item)
{
var tb = container as MyUserControl;
if (tb == null)
{
return;
}
if (value == null)
{
tb.Text = string.Empty;
return;
}
tb.Text = value.ToString();
}
public override void PrepareEditorContentVisual(FrameworkElement editorContent, Binding binding)
{
}
public override void ClearEditorContentVisual(FrameworkElement editorContent)
{
}
protected override DataGridFilterControlBase CreateFilterControl()
{
return null;
}
public bool LeftAlign
{
get
{
if (_container == null)
{
return true;
}
else
{
return _container.LeftAlign;
}
}
set
{
if (_container != null)
{
_container.LeftAlign = value;
}
}
}
}
}
</CODE>
here is my customcontrol MyUserControl.xaml:
<CODE>
<UserControl
x:Class="RadDataGridUWP_1400756.Views.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RadDataGridUWP_1400756.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid>
<TextBlock x:Name="MyTextBlock" HorizontalAlignment="Left" />
</Grid>
</UserControl>
</CODE>
and the xaml.cs
<CODE>
using RadDataGridUWP_1400756.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
namespace RadDataGridUWP_1400756.Views
{
public sealed partial class MyUserControl : UserControl
{
public MyUserControl()
{
this.InitializeComponent();
}
public string Text
{
get => MyTextBlock.Text;
set => MyTextBlock.Text = value;
}
public bool LeftAlign
{
get => MyTextBlock.HorizontalAlignment == HorizontalAlignment.Left;
set
{
if (value == true)
{
MyTextBlock.HorizontalAlignment = HorizontalAlignment.Left;
}
else
{
MyTextBlock.HorizontalAlignment = HorizontalAlignment.Right;
}
}
}
}
}
<CODE