How do I change the cells in column (in datagrid) - wpfdatagrid

xaml :
<dg:DataGrid AutoGenerateColumns="False" Background="#FF484040" BorderBrush="#FF484040" CanUserAddRows="False" CanUserDeleteRows="False" Grid.ColumnSpan="2" HeadersVisibility="Column" Height="195" IsReadOnly="True" Margin="21,12,52,105" Name="dataGrid" SelectedIndex="-1" Width="399">
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Binding="{Binding IdBook}" Header=" IdBook" ></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding NameBook}" Header="NameBook"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Author}" Header="Author"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Price}" Header="Price"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding DateRegister}" Header="DateRegister"></dg:DataGridTextColumn>
<dg:DataGridTextColumn Binding="{Binding Description}" Header="Description" Width="*"></dg:DataGridTextColumn>
<dg:DataGridTemplateColumn>
<dg:DataGridTemplateColumn Width="15">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Height="15" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Name="Checkbox" ToolTip="select" VerticalAlignment="Center" VerticalContentAlignment="Center" Width="15" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</dg:DataGrid.Columns>
</dg:DataGrid>
How do I change the cells in column 7

You are getting the number of columns in the data source. You can get the number of columns in the grid using:
MessageBox.Show(dataGrid.Columns.Count.ToString());

Related

How to change the Datagrid selcted row color and data grid Header Font in UWP xaml

i want to change the data grid selected row color and height of the data grid columns in uwp xaml
i am using xamarin forms.
after installing the packages from NuGet. i am able to use the data grid. now problem is how to change the data grid column/row height and selected row color in uwp
my data grid xaml code : =
<controls:DataGrid AutoGenerateColumns="False" CanUserResizeColumns="False" IsReadOnly="True" Margin="31,21,103,483" Name="UserListView" VerticalScrollBarVisibility="Auto" UseLayoutRounding="True" HorizontalScrollBarVisibility="Auto" TabIndex="4" FontSize="14" Background="White"
HeadersVisibility="Column" SelectedIndex="0" HorizontalGridLinesBrush="#E1E1E1" IsTabStop="True" RenderTransformOrigin="0.504,0.739" Grid.Row="2" BorderBrush="#E1E1E1" BorderThickness="1" Grid.Column="2" Grid.ColumnSpan="7" >
<controls:DataGrid.Columns >
<controls:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" Width="50" x:Name="userCheckBox" >
<controls:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<CheckBox Foreground="#444444" Height="10" Width="10" Margin="15,10,0,10" x:Name="IndvCheckBox" DataContext="{Binding userId}" Unchecked="UserUnchecked" Checked="UserChecked" UseLayoutRounding="True">
</CheckBox>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" Header="Name" Width="380" >
<controls:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock Margin="10,20,0,10" x:Name="NameTextBox" Foreground="#444444" FontSize="12" FontFamily="Montserrat" >
<Run Text="{Binding userPrefix}" />
<Run Text="{Binding userFirstName}" />
<Run Text="{Binding userLastName}" />
</TextBlock>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" Header="Email" Width="380" >
<controls:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock Margin="10,20,0,10" Text="{Binding userEmail}" x:Name="NameTextBox" Foreground="#444444" FontSize="12" FontFamily="Montserrat" />
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" Header="Phone" Width="250" >
<controls:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock FontSize="12" Margin="10,20,0,10" Text="{Binding userPhone}" Foreground="#444444" FontFamily="Montserrat"/>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Tag="Col" Header="Update" Width="*">
<controls:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,20,0,10" Height="15" DataContext="{Binding userId}" Width="15" Source="Images/Edit.png" Tapped="GridUpdateBtnClick" />
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
</controls:DataGrid.Columns>
</controls:DataGrid>
How to change the Datagrid selcted row color
There is ActiveRowColor property in DataGrid control that used to manage Row selected color. For more please refer this.
<dg:DataGrid ActiveRowColor="Red"/>
and data grid Header Font in UWP xaml
You could use the following code to manage the header font size.
<dg:DataGrid.HeaderFontSize>
<OnIdiom x:TypeArguments="x:Double">
<OnIdiom.Tablet>15</OnIdiom.Tablet>
<OnIdiom.Phone>12</OnIdiom.Phone>
</OnIdiom>
</dg:DataGrid.HeaderFontSize>
Unfortunately, DataGrid does not provide FontFamily property for Header. So you need set HeaderLabelStyle like the following.
<dg:DataGrid.HeaderLabelStyle>
<Style TargetType="Label">
<Setter Property="FontFamily" Value="SimSun"></Setter>
</Style>
</dg:DataGrid.HeaderLabelStyle>

Set ContentDialog to show on bottom of page in UWP

I have several ContentDialogs in a RelativeLayout and want them to appear or have the the vertical alignment to "bottom". But it seems that no matter what I try the dialogs always appear on the top of the screen.
This is how they look now
Any ideas?
Here is a xaml code snippet:
<RelativePanel Height="{Binding ActualHeight, ElementName=Page}" >
<ContentDialog x:Name="EntrepriseDialog"
VerticalAlignment="Bottom"
Title="Vælg entreprise"
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" Grid.ColumnSpan="2" Margin="30,194,-71,-194">
<ListView Name="ListEntreprises" VerticalAlignment="Bottom" SelectionChanged="ListEntreprises_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Margin" Value="0,0,0,1"></Setter>
<Setter Property="Background" Value="Transparent"></Setter>
<Setter Property="Padding" Value="5"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel>
<TextBlock>
<Run FontSize="15" Text="{Binding Name}"/>
</TextBlock>
<TextBlock Visibility="Collapsed">
<Run Text="{Binding Id}"/>
</TextBlock>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentDialog>
<ContentDialog x:Name="SaveChooseDialog"
VerticalAlignment="Bottom"
Title=""
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" Grid.ColumnSpan="2" Margin="30,148,-71,-148">
<ListBox Name="ListBoxSaveMode" SelectionChanged="ListBoxSaveMode_SelectionChanged">
<ListBoxItem>
<TextBlock Name="TxtLocally" Text="Gem lokalt"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtServer" Text="Gem på server"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtCancel" Text="Annullér"/>
</ListBoxItem>
</ListBox>
</ContentDialog>
<ContentDialog x:Name="AddPictureDialog"
VerticalAlignment="Bottom"
Title=""
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" Grid.ColumnSpan="2" Margin="30,142,-71,-142">
<ListBox Name="ListBoxAddPicture" SelectionChanged="ListBoxAddPicture_SelectionChanged">
<ListBoxItem>
<TextBlock Name="TxtFromCamera" Text="Tag et nyt"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtFromStorage" Text="Vælg fra kamerarulle"/>
</ListBoxItem>
</ListBox>
</ContentDialog>
</RelativePanel>
EDIT: XAML for entire Page
<Page
Name="Page"
x:Class="...Pages.Documentation.DocumentationCreatePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:...Pages.Documentation"
xmlns:userControl="using:...Pages.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="#8FBC3E">
<Grid>
<Grid.Background>
<ImageBrush Stretch="UniformToFill" ImageSource="/Assets/Images/mainBg.png" />
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel>
<Grid Height="40" Background="#8FBC3E" >
<StackPanel Orientation="Horizontal">
<Button Name="BtnBack" Click="BtnBack_Click" Margin="20 0 20 0" >
<Button.Template>
<ControlTemplate>
<TextBlock FontSize="20" Foreground="White" FontFamily="Segoe MDL2 Assets" Text=""></TextBlock>
</ControlTemplate>
</Button.Template>
</Button>
<TextBlock Name="TxtTitle" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="18"/>
</StackPanel>
</Grid>
<userControl:SyncDataControl></userControl:SyncDataControl>
</StackPanel>
<Grid Grid.Row="1" Name="StackPanel">
<ProgressRing Name="SaveProgressRing" IsActive="False" Foreground="#8FBC3E" Width="40" Height="40" Margin="152,239,87,321" />
<StackPanel Grid.ColumnSpan="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<ListView Name="ListViewDocumentationItems" ScrollViewer.VerticalScrollMode="Disabled" SelectionChanged="ListViewDocumentationItems_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="80"></Setter>
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="VerticalContentAlignment" Value="Center"></Setter>
<Setter Property="Margin" Value="0,0,0,1"></Setter>
<Setter Property="Background" Value="White"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid VerticalAlignment="Center">
<StackPanel Padding="0 0 10 0" Orientation="Horizontal" >
<Image Source="{Binding ImageSource}" VerticalAlignment="Center" Height="40" Margin="5 0 5 0"></Image>
<TextBlock Foreground="Black" HorizontalAlignment="Left" VerticalAlignment="Center">
<Run FontWeight="Bold" FontSize="20" Text="{Binding Name}"/>
</TextBlock>
</StackPanel>
<Grid HorizontalAlignment="Right">
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="Black" VerticalAlignment="Center" Padding="0 0 20 0">
<Run FontSize="15" Text="{Binding Count}"/>
</TextBlock>
<Image Width="15" Height="15" VerticalAlignment="Center" Source="/Assets/Images/rightarrow.png" />
</StackPanel>
</Grid>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<TextBlock Name="TxtDocDesc" TextWrapping="Wrap" Foreground="Gray" Height="53" />
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel Name="PicturePanel" Orientation="Horizontal" Margin="15 0 15 0" />
</ScrollViewer>
</StackPanel>
<Button Name="BtnSave" Grid.Row="2" VerticalAlignment="Bottom" FontSize="25" Click="BtnSave_Click" Background="#8FBC3E" Foreground="White" Height="60" Content="Gem" HorizontalAlignment="Stretch" Margin="5 5 5 5"/>
<RelativePanel VerticalAlignment="Stretch" >
<ContentDialog x:Name="EntrepriseDialog" VerticalContentAlignment="Bottom"
RelativePanel.AlignBottomWithPanel="True"
Title="Vælg entreprise"
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" >
<ListView Name="ListEntreprises" VerticalAlignment="Bottom" SelectionChanged="ListEntreprises_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Margin" Value="0,0,0,1"></Setter>
<Setter Property="Background" Value="Transparent"></Setter>
<Setter Property="Padding" Value="5"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel>
<TextBlock>
<Run FontSize="15" Text="{Binding Name}"/>
</TextBlock>
<TextBlock Visibility="Collapsed">
<Run Text="{Binding Id}"/>
</TextBlock>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentDialog>
<ContentDialog x:Name="SaveChooseDialog"
RelativePanel.AlignBottomWithPanel="True"
Title=""
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}">
<ListBox Name="ListBoxSaveMode" SelectionChanged="ListBoxSaveMode_SelectionChanged">
<ListBoxItem>
<TextBlock Name="TxtLocally" Text="Gem lokalt"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtServer" Text="Gem på server"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtCancel" Text="Annullér"/>
</ListBoxItem>
</ListBox>
</ContentDialog>
<ContentDialog x:Name="AddPictureDialog"
Title=""
PrimaryButtonText=""
IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" >
<ListBox Name="ListBoxAddPicture" SelectionChanged="ListBoxAddPicture_SelectionChanged">
<ListBoxItem>
<TextBlock Name="TxtFromCamera" Text="Tag et nyt"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Name="TxtFromStorage" Text="Vælg fra kamerarulle"/>
</ListBoxItem>
</ListBox>
</ContentDialog>
<ContentDialog x:Name="DialogDownloadProgress"
VerticalAlignment="Stretch"
Title=""
MaxWidth="{Binding ActualWidth, ElementName=pageRoot}">
<StackPanel Padding="0,50">
<TextBlock Name="ProgressTitle" Text="Test test" HorizontalAlignment="Center" Padding="0 0 0 20"/>
<ProgressBar x:Name="ProgressBarDownload" HorizontalAlignment="Stretch" IsEnabled="True"></ProgressBar>
</StackPanel>
</ContentDialog>
</RelativePanel>
</Grid>
</Grid>
It seems the positioning of ContentDialog instances is not in the hands of the developer, at least not without custom versions of it. Afaik the OS will decide where to place the dialog for you.
See here for more information:
http://www.reflectionit.nl/blog/2015/windows-10-xaml-tips-messagedialog-and-contentdialog
So if positioning of the dialog is critical then you might have to create a custom control.

How to set up a binding from DataGridColumns to a multi-selection ComboBox?

I have a DataGrid and a custom ComboBox. The ComboBox used a ListBox to enable multi-select.
I intend to give a ObservableCollection<Data> Datas property as the data source for the ComboBox,where Data is a class with string name and bool checked. The problem is how to set up each column's visibility to a corresponding CheckBoxwhich used a Dataas its source ?
<Style x:Key="CheckBoxListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid x:Name="RootElement">
<CheckBox ClickMode="Press" Content="{Binding Path=Name}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" Foreground="White"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
I saw some post used something like the xmal below, but obviously I do not has any ElementName here.
<DataGridTextColumn Header="Price" Binding="{Binding Price}" IsReadOnly="False"
Visibility="{Binding IsChecked,
Converter={StaticResource visibilityConverter},
ElementName=chkShowPrice}"/>
This binding is not straight forward as it looks. Since DataGridTextColumn does not fall in the same visual tree as DataGrid, so it is not possible to bind the Visibility of the column directly. However, a bit tricky approach but you may use x:Reference for the same.
Here is how we can do it
XAML
<!--I added this element to provide the DataContext by using x:Reference-->
<FrameworkElement x:Name="contextProvider" />
<DataGrid Grid.Column="1"
AutoGenerateColumns="False"
ItemsSource="{Binding DD}"
x:Name="dg"
Style="{StaticResource DataGridDemoStyle}">
<DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</DataGrid.Resources>
<i:Interaction.Behaviors>
<behavior:DataGridDropBehavior></behavior:DataGridDropBehavior>
</i:Interaction.Behaviors>
<DataGrid.Columns>
<DataGridTextColumn x:Name="Column3"
Binding="{Binding Symbol}"
Header="Symbol"
Width="*"
IsReadOnly="True"
Visibility="{Binding DataContext.Data[0].IsSelected, Source={x:Reference contextProvider}, Converter={StaticResource BooleanToVisibilityConverter}}" />
<DataGridTextColumn x:Name="Column4"
Binding="{Binding Ask}"
Header="Ask"
Width="*"
IsReadOnly="True"
Visibility="{Binding DataContext.Data[1].IsSelected, Source={x:Reference contextProvider}, Converter={StaticResource BooleanToVisibilityConverter}}" />
<DataGridTextColumn x:Name="Column5"
Binding="{Binding Bid}"
Header="Bid"
Width="*"
IsReadOnly="True"
Visibility="{Binding DataContext.Data[2].IsSelected, Source={x:Reference contextProvider}, Converter={StaticResource BooleanToVisibilityConverter}}" />
<DataGridTextColumn x:Name="Column6"
Binding="{Binding Volume}"
Header="Vol"
Width="*"
IsReadOnly="True"
Visibility="{Binding DataContext.Data[3].IsSelected, Source={x:Reference contextProvider}, Converter={StaticResource BooleanToVisibilityConverter}}" />
</DataGrid.Columns>
</DataGrid>
I have binded the items from the same Data bound to multi select combo box to the visibility of the columns
changed the following so that the DataContext is available to all the elements instead of just datagrid.
dg.DataContext = d;
to
DataContext = d;
lastly to enable the IsChecked binding modify the CheckBox from
<CheckBox ClickMode="Press" Content="{Binding Path=Name}" IsChecked="true" Foreground="White"/>
to
<CheckBox ClickMode="Press" Content="{Binding Path=Name}" IsChecked="{Binding IsSelected}" Foreground="White"/>
that's all you need for such binding.
here is the link to the provided sample project DataGridColumnsVisibilityBinding.zip
Let me know if this helps.

WPF Visual Basic Nested DataGrid in TemplateColumn

I am a newcomer to this forum and also relative newcomer in programming.
Nevertheless I went to a personal music player using WPF/Visual Basic have dared and fought very( !) Long on the following issue:
Equivalent to the media player I would like for the respective artist in a list to the right of the respective title album art and other info view.
For this I have a DataGrid (Master) for the respective albums of the interprets - as far as easily; to now display album art from the respective song details right now, I need the possibility, in a TemplateColumn ** ** another DataGrid (child) to "Nesting", but what I regarding Petrol Ofisi
A solution that comes very close to that in this Link http://social.msdn.microsoft.com/Forums/vstudio/en-US/36909161-3afc-4fcc-af0a-da377a65e421/wpf-grid-column-databinding-to-comple is present, but only to a limited extent for me understandable, since
Programming in C# is,
the data binding via defined Collection-Klassen and last, but not least
the solution uses a converter, an issue with its implementation was really hard for me do.
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" Margin="0,0,-7.6,-2.4" VerticalAlignment="Top" Width="1344.8" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Height="790">
<DataGrid x:Name="AlbenInterpretenAlbenDG" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsVirtualizingWhenGrouping="True" VirtualizingPanel.VirtualizationMode="Recycling" CanUserAddRows="False" HorizontalAlignment="Left" Height="413.6" Margin="-7.2,362.4,0,0" Width="1345.2" BorderThickness="0" FontFamily="Baskerville Old Face" FontSize="26.667" Foreground="#FF2F3699" AutoGenerateColumns="False" VerticalAlignment="Top" HorizontalScrollBarVisibility="Hidden" IsReadOnly="True" Background="{x:Null}" MaxHeight="800" HorizontalGridLinesBrush="#FFFFC20E" IsSynchronizedWithCurrentItem="False" HeadersVisibility="None">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock x:Name="GroupHeaderAlbum" Background="#FFFFC20E" Foreground="#FF2F3699" FontSize="40.333" FontFamily="Baskerville Old Face" FontWeight="Bold" FontStyle="Italic"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="AlbumCover" CanUserSort="True" CanUserReorder="False" ClipboardContentBinding="{x:Null}" SortMemberPath="Album.SortName" Header="AlbumCover" SortDirection="Ascending">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid x:Name="GridAlbumCover" Background="#FFFFC20E" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" Width="190" Height="190">
<Image Source="{Binding AlbumcoverBildDatei}" Stretch="Fill" Height="180" Width="180" Margin="5,5,5,5"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="AlbumID" Binding="{Binding AlbumID}" ClipboardContentBinding="{x:Null}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="AlbumID" Visibility="Hidden" d:IsHidden="True"/>
<DataGridTextColumn x:Name="Album" Binding="{Binding Album}" ClipboardContentBinding="{x:Null}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="Album" Visibility="Hidden" d:IsHidden="True"/>
<DataGridTextColumn x:Name="Orchestra" Binding="{Binding Orchestra}" ClipboardContentBinding="{x:Null}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="Orchestra" Visibility="Hidden" d:IsHidden="True"/>
<DataGridTemplateColumn x:Name="AlbenInterpretenAlbenSongs" Header="" Visibility="Visible" CanUserReorder="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid x:Name="AlbenInterpretenAlbenSongsDG" **Binding=??????** VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsVirtualizingWhenGrouping="True" VirtualizingPanel.VirtualizationMode="Recycling" CanUserAddRows="False" HorizontalAlignment="Left" Height="200" Margin="0,0,-169.6,-3.6" Width="1324.4" BorderThickness="0" FontFamily="Baskerville Old Face" FontSize="26.667" Foreground="#FF2F3699" AutoGenerateColumns="False" VerticalAlignment="Top" HorizontalScrollBarVisibility="Hidden" IsReadOnly="True" Background="{x:Null}" IsSynchronizedWithCurrentItem="True" MaxHeight="800" HorizontalGridLinesBrush="#FFFFC20E" VerticalGridLinesBrush="#FFFFC20E" HeadersVisibility="None">
<DataGrid.RowBackground>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFBCBEDC" Offset="0.085"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</DataGrid.RowBackground>
<DataGrid.BorderBrush>
<SolidColorBrush Color="#FF688CAF" Opacity="0"/>
</DataGrid.BorderBrush>
<DataGrid.Columns>
<DataGridTextColumn x:Name="OrchestraDG" Binding="{Binding Orchestra}" ClipboardContentBinding="{Binding Orchestra}" FontSize="37.333" FontFamily="Baskerville Old Face" Header="Album-Interpret" SortMemberPath="Orchestra" CanUserSort="True" Visibility="Hidden" Width="370"/>
<DataGridTextColumn x:Name="AlbumIDDG" Binding="{Binding AlbumID}" ClipboardContentBinding="{Binding AlbumID}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="AlbumID" SortMemberPath="AlbumID" CanUserSort="True" Visibility="Hidden"/>
<DataGridTextColumn x:Name="AlbumNameDG" Binding="{Binding Album}" ClipboardContentBinding="{Binding Album}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="Album" SortMemberPath="Alben.SortName" CanUserSort="True" Width="190" Visibility="Hidden"/>
<DataGridTextColumn x:Name="NrDG" Binding="{Binding Track}" ClipboardContentBinding="{Binding Track}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="Nr." SortMemberPath="Track" CanUserSort="True" Width="50">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="Block.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn x:Name="SongTitelDG" Binding="{Binding Title}" ClipboardContentBinding="{Binding Title}" FontSize="41.333" FontFamily="Baskerville Old Face" Header="Song-Titel" Width="505"/>
<DataGridTextColumn x:Name="InterpretDG" Binding="{Binding Artist}" ClipboardContentBinding="{Binding Artist}" FontSize="37.333" FontFamily="Baskerville Old Face" Header="Interpret" Width="380"/>
<DataGridTextColumn x:Name="LängeDG" Binding="{Binding Length, StringFormat=m:ss}" ClipboardContentBinding="{Binding Length}" FontSize="37.333" FontFamily="Baskerville Old Face" Header="Länge" Width="90">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="Block.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn x:Name="JahrDG" Binding="{Binding SongsAlben/ErscheinungsJahr}" ClipboardContentBinding="{Binding ErscheinungsJahr}" FontSize="37.333" FontFamily="Baskerville Old Face" Header="Jahr" Width="100">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="Block.TextAlignment" Value="Right"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Public Function GetAbfrageAlbenInterpretenAlbenSongs() As DataTable
Dim adapter As New OleDbDataAdapter("Select * From AbfrageAlbenInterpretenAlbenSongs ORDER BY AbfrageAlbenInterpretenAlben.AlbenInterpreten.SortName, AbfrageAlbenInterpretenAlben.Alben.SortName, Songs.Track", Application.con)
Dim AbfrageAlbenInterpretenAlbenSongsDataSet As New DataSet()
adapter.Fill(AbfrageAlbenInterpretenAlbenSongsDataSet, "AbfrageAlbenInterpretenAlbenSongs")
Return AbfrageAlbenInterpretenAlbenSongsDataSet.Tables(0)
Application.con.Close()
End Function
Private Sub PageAlbumInterpret_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
Dim AlbenInterpretenAlbenDS As DataSet
AlbenInterpretenAlbenDS = GetAbfrageAlbenInterpretenAlbenSongs()
' Set the DataContext of AlbenInterpretenAlbenDG to DataTable
AlbenInterpretenAlbenDG.DataContext = AlbenInterpretenAlbenDS.Tables(0)
AlbenInterpretenAlbenDG.ItemsSource = AlbenInterpretenAlbenDS.Tables(0).DefaultView
End Sub
Private Sub Artist_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.TextChangedEventArgs)
'ALBEN UND SONGS
Dim cvAlben As BindingListCollectionView = CType(CollectionViewSource.GetDefaultView(AlbenInterpretenAlbenDG.ItemsSource),BindingListCollectionView)
CVAlben.CustomFilter = "Orchestra = '" & Artist.Text.Replace("'", "''") & "' Or Orchestra Like '" & Artist.Text.Replace("'", "''") & ";%' Or Orchestra Like '%; " & Artist.Text.Replace("'", "''") & ";%' Or Orchestra Like '%; " & Artist.Text.Replace("'", "''") & "'"
Dim ArtistString As String
ArtistString = Me.Artist.Text
Dim DRV As DataRowView
For Each DRV In AlbenInterpretenAlbenDG.Items
If ArtistString = DRV("Orchestra") Then
AlbenInterpretenAlbenDG.GroupStyle.Item(0) = CType(PageAlbumInterpret.FindResource("GroupHeaderStyleAlbum"), GroupStyle)
Else
AlbenInterpretenAlbenDG.GroupStyle.Item(0) = CType(PageAlbumInterpret.FindResource("GroupHeaderStyleOrchestraAlbum"), GroupStyle)
Exit Sub
End If
Next
CVAlben.MoveCurrentToFirst
Dim border As Decorator = VisualTreeHelper.GetChild(AlbenInterpretenAlbenDG, 0)
If border IsNot Nothing Then
Dim scrollViewer As ScrollViewer = border.Child
scrollViewer.ScrollToTop()
End If

Windows Phone 8 xaml textblock binding format

I would like to format a textblock which is bound to a value, to show "R" before the actual value, is this possible, cause I cannot directly change the value?
Thank you
<ListBox x:Name="lstbundleListbox"
Foreground="White"
Height="320"
HorizontalAlignment="Center">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding name}"
TextWrapping="Wrap"
HorizontalAlignment="Center" />
<TextBlock Text="{Binding cost}"
TextWrapping="Wrap"
HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ListBox>
So I basically want the textblock to show R(cost)
use Run
<TextBlock>
<Run Text="R" />
<Run Text="{Binding cost}" />
</TextBlock>
or use StringFormat
<TextBlock Text="{Binding cost, StringFormat=R{0}}" />
i think this can be done by
<StackPanel Orientation Horizontal>
<TextBlock Text="R(" />
<TextBlock Text="{Binding cost}"/>
<TextBlock Text=")" />
</StackPanel>
distance between them can be set by setting padding of the textblocks...