Borders won't appear on UserControl Instances - wpf

I have created a custom control that utilizes pre-existing WPF controls. Inside the control I made some borders that visually separates the individual elements.
Here's the XAML code for the UserControl: TimeEntry:
<UserControl
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"
mc:Ignorable="d"
x:Class="ClockWatcher.TimeEntry"
x:Name="UserControl"
d:DesignWidth="365" d:DesignHeight="40" VerticalAlignment="Top" HorizontalAlignment="Left">
<UserControl.Resources>
<Thickness x:Key="borderDim">0,0,1,0</Thickness>
<Thickness x:Key="labelPadding">2,0</Thickness>
<Color x:Key="borderColor">#FF151E3E</Color>
<Color x:Key="buttonColorBackground">#FFB3D6E6</Color>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" VerticalAlignment="Top">
<Border x:Name="mainBorder" BorderThickness="3" CornerRadius="1" Padding="1" Background="#FF9DB6BF" HorizontalAlignment="Left" VerticalAlignment="Top">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Border.BorderBrush>
<Grid x:Name="borderGrid">
<StackPanel x:Name="mainStack" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
<Border x:Name="timeInBorder" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="{DynamicResource borderDim}" Padding="{DynamicResource labelPadding}">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Border.BorderBrush>
<StackPanel x:Name="timeInStack" Orientation="Vertical" Height="31.92" Width="50.46">
<Label x:Name="timeInLabel" Content="Time In" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}" BorderThickness="0,0,0,1">
<Label.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Label.BorderBrush>
</Label>
<TextBlock x:Name="timeInBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding timeIn.TimeOfDay, ElementName=UserControl}" VerticalAlignment="Top"/>
</StackPanel>
</Border>
<Border x:Name="timeOutBorder" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="{DynamicResource borderDim}" Padding="{DynamicResource labelPadding}">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Border.BorderBrush>
<StackPanel x:Name="timeOutStack" Orientation="Vertical" Height="31.92" Width="54.46">
<Label x:Name="timeOutLabel" Content="Time Out" HorizontalAlignment="Left" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}" BorderThickness="0,0,0,1">
<Label.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Label.BorderBrush>
</Label>
<TextBlock x:Name="timeOutBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding timeOut.TimeOfDay, ElementName=UserControl}" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}"/>
</StackPanel>
</Border>
<Border x:Name="timeSpentBorder" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="{DynamicResource borderDim}" Padding="{DynamicResource labelPadding}">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Border.BorderBrush>
<StackPanel x:Name="timeSpentStack" Orientation="Vertical" Height="31.92" Width="63.653">
<Label x:Name="timeSpentLabel" Content="Time Spent" HorizontalAlignment="Left" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}" BorderThickness="0,0,0,1">
<Label.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Label.BorderBrush>
</Label>
<TextBlock x:Name="timeSpentBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding timeSpent,ElementName=UserControl}" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}"/>
</StackPanel>
</Border>
<Button x:Name="alarmButton" Content="Alarm" HorizontalAlignment="Center" BorderThickness="0,0,1,0">
<Button.Background>
<SolidColorBrush Color="{DynamicResource buttonColorBackground}"/>
</Button.Background>
<Button.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Button.BorderBrush>
</Button>
<StackPanel x:Name="commentStack1" Orientation="Horizontal">
<TextBox x:Name="commentBox" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding comment,ElementName=UserControl}" VerticalAlignment="Top" Padding="{DynamicResource labelPadding}" BorderThickness="0" SourceUpdated="commentBox_SourceUpdated">
<TextBox.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</TextBox.BorderBrush>
</TextBox>
<Button x:Name="commentButton" VerticalAlignment="Top" Content="Ad" BorderThickness="1,0" Padding="{DynamicResource labelPadding}">
<Button.Background>
<SolidColorBrush Color="{DynamicResource buttonColorBackground}"/>
</Button.Background>
<Button.BorderBrush>
<SolidColorBrush Color="{DynamicResource borderColor}"/>
</Button.BorderBrush>
</Button>
</StackPanel>
<Button x:Name="deleteButton" Content="X" Padding="{DynamicResource labelPadding}" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="{x:Null}" BorderThickness="{DynamicResource borderDim}">
<Button.Background>
<SolidColorBrush Color="{DynamicResource buttonColorBackground}"/>
</Button.Background>
</Button>
</StackPanel>
</Grid>
</Border>
</Grid>
</UserControl>
In Blend, or the designer view in VS2013, the borders will appear just fine. However, when I place an instance of this control into a grid in the MainWindow, the borders won't appear.
All I do is this in MainWindow:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ClockWatcher" x:Class="ClockWatcher.MainWindow"
Title="MainWindow" Height="554" Width="949">
<Window.Resources>
<UserControl x:Key="timeEntry"/>
</Window.Resources>
<Grid x:Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250*"/>
<ColumnDefinition Width="445*"/>
<ColumnDefinition Width="246*"/>
</Grid.ColumnDefinitions>
<Grid x:Name="leftGrid" Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
</Grid>
<Grid x:Name="rightGrid" Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
</Grid>
<ScrollViewer x:Name="timeEntryList" Grid.Column="1" HorizontalAlignment="Left">
<StackPanel x:Name="scrollStack" Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left">
<local:TimeEntry/>
</StackPanel>
</ScrollViewer>
</Grid>
</Window>
Can someone help me find out what I did wrong here? I've been reading a book to find out about dependency objects and dependency properties, which I've also added the UserControl, but I'm not sure what's really wrong with it right now.

Declare all these resources in App.xaml and it will work,
<Application.Resources>
<Thickness x:Key="borderDim">0,0,1,0</Thickness>
<Thickness x:Key="labelPadding">2,0</Thickness>
<Color x:Key="borderColor">#FF151E3E</Color>
<Color x:Key="buttonColorBackground">#FFB3D6E6</Color>
</Application.Resources>

Related

Gong drag and drop: drag effect border does not fit element

Using the gong drag and drop framework, one gets a drag effect, which is a simple border around the possible droptarget.
However, in my case for some reason this border doesn't fit the actual element, as shown here:
I have already tried to change background colors of the different xaml elements of the drop target to find out if some elements are bigger (but hidden), but couldn't find any.
I guess the problem is due to the usage of viewboxes, which I use, since the size of these drop targets is dynamic and zoom-able.
Here is the xaml code of drop target:
<Border BorderThickness="{Binding PlatformBorderThickness}" dd:DragDrop.IsDropTarget="True" dd:DragDrop.DropHandler="{StaticResource CustomDropHandler}" >
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0" >
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="Black" Offset="0.1"/>
<GradientStop Color="Transparent" Offset="0.1"/>
<GradientStop Color="Transparent" Offset="0.9"/>
<GradientStop Color="Black" Offset="0.9"/>
<GradientStop Color="Black" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<Viewbox Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" HorizontalAlignment="Left">
<TextBlock Text="{Binding Equipment.Name, FallbackValue='Please add a device!'}" FontWeight="Bold"/>
</Viewbox>
<Viewbox Grid.Column="1" Grid.ColumnSpan="1" Grid.Row="0" Grid.RowSpan="1" Stretch="Uniform" HorizontalAlignment="Right">
<Button Command="{Binding DeleteButtonClick}" Background="Transparent" BorderThickness="0"
Margin="0" Padding="0">
<Image Source="/Resources/Cancel.ico"/>
</Button>
</Viewbox>
<Viewbox Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="1" Grid.RowSpan="1" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" Margin="2">
<DataGrid Width="200" Height="135" HeadersVisibility="None" RowBackground="Transparent" BorderThickness="0"
ItemsSource="{Binding Equipment.Settings}" SelectionMode="Single" AutoGenerateColumns="False" GridLinesVisibility="Vertical" CanUserAddRows="False"
GotFocus="DataGrid_GotFocus" Name="DutInfoGrid" >
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
</DataGrid.Resources>
<DataGrid.Background>
<ImageBrush ImageSource="{Binding Equipment.ImagePath, FallbackValue={StaticResource AddItemImage}, TargetNullValue={StaticResource AddItemImage}}"
Stretch="Fill" Opacity="0.25"/>
</DataGrid.Background>
<DataGrid.Columns>
<DataGridTemplateColumn >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="DutInfoGridRemoveButton" Background="Transparent" BorderThickness="0" Margin="0" Padding="0" Height="15"
Command="{Binding Path=DataContext.RemoveClick, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}">
<Image Source="/Resources/Trash.ico"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Items[3].Value}"/>
<DataGridTextColumn Binding="{Binding Items[6].Value}" />
</DataGrid.Columns>
</DataGrid>
</Viewbox>
</Grid>
</Border>
Edit:
After some further testing I found out that if I remove the ViewBox element around the datagrid, the problem is gone. Any ideas, why the ViewBox causes this issue and how to solve it?
You should probably switch to the action file, then swap and use jQuery with the XML code which will refer to the drag and drop.

WPF - Showing specific data for Grid on case of using window style

I have providing a windows style for all of my windows:
Here is what I adding on app.xaml
<Style x:Key="Style.Window.Default" TargetType="Window">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Window">
<Grid Background="{TemplateBinding Background}">
<Grid Name="gridBar" Height="40" VerticalAlignment="Top" Margin="1,0,1,0">
<Grid.Background>
<LinearGradientBrush StartPoint="0, 0" EndPoint="0, 1" Opacity=".1">
<GradientStop Offset="0" Color="{DynamicResource AccentColor}" />
<GradientStop Offset=".3" Color="{DynamicResource AccentColor}" />
<GradientStop Offset="1" Color="Transparent" />
</LinearGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- title -->
<ItemsControl Background="Transparent" MouseDoubleClick="MaximizeClick" >
<TextBlock Text="{TemplateBinding Title}" Margin="8,8,8,0" x:Name="txtTitle"
Style="{StaticResource ModernWindowTitle}"
/>
</ItemsControl>
</Grid>
<Grid VerticalAlignment="top" Margin="0,40,0,0" Background="White">
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
And here is what I have on each window:
<Window x:Class="WpfApplication1.MainWindow1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300" Title="title"
Style="{StaticResource Style.Window.Default}" >
<Grid>
<TextBlock Text="text of window 1"></TextBlock>
</Grid>
</Window>
How could I change my code for having or showing data of Grid, because it's not showing data of the Grid
Use a content presenter to insert the content in the ControlTemplate. You never say where you want the content to appear, but this top-aligned grid is empty so maybe that's where?
<Grid VerticalAlignment="top" Margin="0,40,0,0" Background="White">
<ContentPresenter
/>
</Grid>
I have a question for you: What is the purpose of the ItemsControl here?
<!-- title -->
<ItemsControl Background="Transparent" MouseDoubleClick="MaximizeClick" >
<TextBlock Text="{TemplateBinding Title}" Margin="8,8,8,0" x:Name="txtTitle"
Style="{StaticResource ModernWindowTitle}"
/>
</ItemsControl>
Another question: Why do you define four columns in your grid and never use any of them? What are those columns for?

How to maximize WPF UserControl to the width of Frame?

I have a Window with a Stack Panel and Frame. The Stack Panel holding my menus. On selecting menus, am loading my UserControls within the Frame.
But problem is the UserControl is displaying in the center of the Frame and not maximized.
Can anyone help me to maximize my UserControl to the width of the Frame and Resize all the controls within the UserControl?
Here is my xaml files...
UserControl:
<UserControl x:Class="PosWp.Categorys"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
d:DesignHeight="400" d:DesignWidth="700" Loaded="UserControl_Loaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ButtonStyleDictionary.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Width="700">
<StackPanel Margin="0,0,0,0" Height="Auto" Width="Auto">
<TabControl Name="Tabs1" TabStripPlacement="top" BorderThickness="0" BorderBrush="#CC684331" Margin="0,0,0,0">
<TabControl.Background>
<RadialGradientBrush>
<GradientStop Color="Gray" Offset="0"/>
<GradientStop Color="Gray" Offset="0"/>
<GradientStop Color="Gray" Offset="0"/>
<GradientStop Color="Gray" Offset="0"/>
</RadialGradientBrush>
</TabControl.Background>
<TabItem Header="Category" Name="GridCat" IsSelected="False" Visibility="Hidden">
<Grid Height="280" Width="671">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23"></RowDefinition>
<RowDefinition Height="34" />
<RowDefinition Height="143" />
<RowDefinition Height="50*"></RowDefinition>
</Grid.RowDefinitions>
<DataGrid IsReadOnly="True" AutoGenerateColumns="False" AlternatingRowBackground="Beige" Height="142" Grid.ColumnSpan="2" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,0,206,0" Name="dgCategory" VerticalAlignment="Top" Width="460" Grid.RowSpan="3" SelectionChanged="dgCategory_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=CategoryCode}" Header="Category" Width="200" ></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=Categoryname}" Header="CategoryName" Width="250" ></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="Create" Template="{StaticResource Create}" Height="30" HorizontalAlignment="Left" Grid.Row="3" Margin="40,0,0,0" Click="Create_Click" VerticalAlignment="Top" Width="75" />
<Button x:Name="Edit" Template="{StaticResource Edit}" Height="30" HorizontalAlignment="Left" Grid.Row="3" Margin="120,0,0,0" Click="Edit_Click" VerticalAlignment="Top" Width="75" />
<Button x:Name="Delete" Template="{StaticResource Delete}" Height="30" HorizontalAlignment="Left" Grid.Row="3" Grid.Column="1" Click="Delete_Click" Margin="0,0,0,0" VerticalAlignment="Top" Width="75" />
<Button x:Name="Exit" Template="{StaticResource Exit}" Height="30" HorizontalAlignment="Left" Grid.Row="3" Grid.Column="1" Click="Exit_Click" Margin="80,0,0,0" VerticalAlignment="Top" Width="78" />
<Label Content="Category Master" FontWeight="Bold" Grid.ColumnSpan="2" Height="28" HorizontalAlignment="Left" Margin="167,-39,0,0" Name="lblgrid" VerticalAlignment="Top" Width="136" />
</Grid>
</TabItem>
<TabItem Header="Category" Name="Cat" Visibility="Hidden">
<Grid Height="280" Width="689">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="180"/>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="70"></RowDefinition>
<RowDefinition Height="70"></RowDefinition>
<RowDefinition Height="70"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="CategoryCode" FontWeight="Bold" FontSize="12" Name="lblCatcode" Width="110" Margin="0,29,0,16" Height="25" HorizontalAlignment="Right"></Label>
<Label Content="CategoryName" FontWeight="Bold" FontSize="12" Grid.Row="1" Name="lblCatName" Width="110" Margin="0,22,0,23" HorizontalAlignment="Right"></Label>
<TextBox Name="txtCatcode" Grid.Column="1" Width="170" HorizontalAlignment="Left" Margin="0,28,0,17" Height="25"></TextBox>
<TextBox Name="txtCatName" Grid.Column="1" Grid.Row="1" Width="170" HorizontalAlignment="Left" Margin="0,22,0,0" Height="25" VerticalAlignment="Top"></TextBox>
<Button x:Name="Save" Template="{StaticResource Save}" Grid.Column="1" Grid.Row="2" Margin="5,0,0,0" HorizontalAlignment="Left" Click="Save_Click" Width="85" Height="30" ></Button>
<Button x:Name="Update" Template="{StaticResource Update}" Visibility="Hidden" Grid.Column="1" Grid.Row="2" Margin="5,0,0,0" Click="Update_Click" HorizontalAlignment="Left" Width="85" Height="30" ></Button>
<Button x:Name="Remove" Template="{StaticResource Remove}" Visibility="Hidden" Grid.Column="1" Grid.Row="2" Margin="5,0,0,0" Click="Remove_Click" HorizontalAlignment="Left" Width="85" Height="30"></Button>
<Button x:Name="Close" Template="{StaticResource Close}" Grid.Column="1" Grid.Row="2" Margin="95,0,0,0" HorizontalAlignment="Left" Height="30" Click="Close_Click" Width="85"></Button>
<Label Content="Category Master" FontWeight="Bold" Grid.ColumnSpan="2" Height="28" HorizontalAlignment="Left" Margin="167,-39,0,0" Name="lblcategory" VerticalAlignment="Top" />
</Grid>
</TabItem>
</TabControl>
</StackPanel>
</ScrollViewer>
</UserControl>
Window xaml:
<Window x:Class="PosWp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="650" ResizeMode="CanResize" WindowState="Maximized" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="CornflowerBlue" />
<Setter Property="Height" Value="22" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Height="{TemplateBinding Height}">
<Grid.RowDefinitions>
<RowDefinition Height="1.8*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Rectangle Grid.RowSpan="2" RadiusX="7" RadiusY="7" Fill="{TemplateBinding Background}">
<Rectangle.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1" Color="HotPink" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
<Rectangle Margin="3,1" RadiusX="3" RadiusY="3">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#dfff" />
<GradientStop Offset="1" Color="#0fff" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter Grid.RowSpan="3" Margin="13,2,13,4" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.Background>
<RadialGradientBrush>
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0"/>
<GradientStop Color="#FFDDDDDD" Offset="0"/>
<GradientStop Color="#FF28BCE6" Offset="0"/>
</RadialGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="220"/>
<ColumnDefinition Width="321*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
</Grid.RowDefinitions>
<ScrollViewer Grid.Column="0" Height="Auto" Width="Auto" >
<StackPanel Grid.Column="0" Height="Auto" Orientation="Vertical" ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel HorizontalAlignment="Left" Grid.Column="0" Height="Auto" Width="220" >
<Expander Header="Master" HorizontalAlignment="Left" Grid.Column="0" FontWeight="Bold" Width="200" Height="Auto" >
<StackPanel ScrollViewer.VerticalScrollBarVisibility="Auto" >
<StackPanel HorizontalAlignment="Left" Height="Auto" Width="200" >
<Button Content="Category" Margin="10,0,0,0" Name="btnMasCat" Click="btnMasCat_Click"/>
<Button Content="Department" Margin="10,0,0,0" Name="btnMasDep" Click="btnMasDep_Click" />
<Button Content="Employee" Margin="10,0,0,0" Name="btnMasEmp" Click="btnMasEmp_Click" />
<Button Content="Kitchen" Margin="10,0,0,0" Name="btnMasKit" Click="btnMasKit_Click"/>
<Button Content="PayMode" Margin="10,0,0,0" Name="btnMasPay" Click="btnMasPay_Click"/>
<Button Content="Modifier" Margin="10,0,0,0" Name="btnMasMod" Click="btnMasMod_Click"/>
<Button Content="PosMaster" Margin="10,0,0,0" Name="btnMasPos" Click="btnMasPos_Click"/>
<Button Content="Session" Margin="10,0,0,0" Name="btnMasSession" Click="btnMasSession_Click"/>
<Button Content="Table" Margin="10,0,0,0" Name="btnMasTable" Click="btnMasTable_Click"/>
<Button Content="Tax" Margin="10,0,0,0" Name="btnMasTax" Click="btnMasTax_Click"/>
<Button Content="Discount" Margin="10,0,0,0" Name="btnMasDis" Click="btnMasDis_Click"/>
<Button Content="ItemMaster" Margin="10,0,0,0" Name="btnMasItem" Click="btnMasItem_Click"/>
<Button Content="Shift" Margin="10,0,0,0" Name="btnMasShift" Click="btnMasShift_Click"/>
<Button Content="User" Margin="10,0,0,0" Name="btnMasUser" Click="btnMasUser_Click"/>
<Button Content="RoomMaster" Margin="10,0,0,0" Name="btnMasRoom" Click="btnMasRoom_Click"/>
<Button Content="Unit" Margin="10,0,0,0" Name="btnMasUnit" Click="btnMasUnit_Click"/>
</StackPanel>
</StackPanel>
</Expander>
<Expander Header="Transaction" HorizontalAlignment="Left" FontWeight="Bold" Width="200" Height="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel HorizontalAlignment="Left" Width="200" ScrollViewer.VerticalScrollBarVisibility="Auto">
<Button Content="BookigTable" Margin="10,0,0,0" Name="btnBooking" Click="btnBooking_Click"/>
<Button Content="Button B" Margin="10,0,0,0" />
<Button Content="Button C" Margin="10,0,0,0" />
<Button Content="Button D" Margin="10,0,0,0" />
<Button Content="Button E" Margin="10,0,0,0" />
</StackPanel>
</StackPanel>
</Expander>
<Expander Header="Report" HorizontalAlignment="Left" FontWeight="Bold" Width="200" ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel ScrollViewer.VerticalScrollBarVisibility="Auto">
<StackPanel HorizontalAlignment="Left" Width="200" ScrollViewer.VerticalScrollBarVisibility="Auto">
<Button Content="Category" Margin="10,0,0,0" Name="btnRepCat" Click="btnRepCat_Click"/>
<Button Content="Department" Margin="10,0,0,0" Name="btnRepDep" Click="btnRepDep_Click"/>
<Button Content="Employee" Margin="10,0,0,0" Name="btnRepEmp" Click="btnRepEmp_Click"/>
<Button Content="Kitchen" Margin="10,0,0,0" Name="btnRepKit" Click="btnRepKit_Click"/>
<Button Content="PayMode" Margin="10,0,0,0" Name="btnRepPay" Click="btnRepPay_Click"/>
<Button Content="Modifier" Margin="10,0,0,0" Name="btnRepMod" Click="btnRepMod_Click"/>
<Button Content="PosMaster" Margin="10,0,0,0" Name="btnRepPos" Click="btnRepPos_Click"/>
<Button Content="Session" Margin="10,0,0,0" Name="btnRepsession" Click="btnRepsession_Click"/>
<Button Content="Table" Margin="10,0,0,0" Name="btnRepTable" Click="btnRepTable_Click"/>
<Button Content="Tax" Margin="10,0,0,0" Name="btnRepTax" Click="btnRepTax_Click"/>
<Button Content="Discount" Margin="10,0,0,0" Name="btnRepDis" Click="btnRepDis_Click"/>
<Button Content="ItemMaster" Margin="10,0,0,0" Name="btnRepItem" Click="btnRepItem_Click"/>
<Button Content="Shift" Margin="10,0,0,0" Name="btnRepShift" Click="btnRepShift_Click"/>
<Button Content="User" Margin="10,0,0,0" Name="btnRepUser" Click="btnRepUser_Click"/>
<Button Content="RoomMaster" Margin="10,0,0,0" Name="btnRepRoom" Click="btnRepRoom_Click"/>
<Button Content="Unit" Margin="10,0,0,0" Name="btnRepUnit" Click="btnRepUnit_Click"/>
</StackPanel>
</StackPanel>
</Expander>
</StackPanel>
</StackPanel>
</ScrollViewer>
<Frame Grid.Column="1" NavigationUIVisibility="Hidden" Margin="0,0,0,0" Name="frame1" >
<Frame.Background>
<RadialGradientBrush >
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0"/>
<GradientStop Color="#FFDDDDDD" Offset="0"/>
<GradientStop Color="#FF28BCE6" Offset="0"/>
</RadialGradientBrush>
</Frame.Background>
</Frame>
</Grid>
</Window>
When you set the Content of frame1 to the instance of your UserControl, it will take the size of the frame. The reason why you feel it is not maximized is because you have set the height and width of your elements within your UserControl (like the ScrollViewer width). Just set the Background of your UserControl to some color and at runtime you will see that it takes the size of the frame. But the content within the usercontrol is not taking the size of the usercontrol.
WPF layout is not same as Winforms and it is not a good practice to set the height and width of all your control exclusively. The controls render themselves according to their content.

Reference within a ResourceDictionary

I have
<Image x:Name="imgScreenshoot" Margin="2" Source="{Binding Converter={StaticResource ImageConverter1}}" />
within a ResourceDictionary
at the same time it has
<local:ImageConverter x:Key="ImageConverter1" />
In design mode there is no error.
But when I start application I got the error that app. canot resolve reference ImageConverter1.
How do I can fix it? Thank you!
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="DataTemplateScreen">
<Border Height="250" Width="250" BorderBrush="#FF3798F1" BorderThickness="2" CornerRadius="5" >
<Grid Margin="2,2,2,2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF0F8FE" Offset="0"/>
<GradientStop Color="#FFE0F3FE" Offset="0.3"/>
<GradientStop Color="#FF6FA7C5" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid x:Name="brdNameActionButtons" Grid.ColumnSpan="3" Margin="0">
<Grid.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFDCF0FA" Offset="0"/>
<GradientStop Color="#FFC5E6F7" Offset="0.2"/>
<GradientStop Color="#FF297CCA" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<TextBlock x:Name="txbName" Text="{Binding Name}" Margin="2" Grid.Row="0" FontWeight="Bold" FontSize="12" Grid.Column="0" HorizontalAlignment="Left" Foreground="Black" FontFamily="Segoe UI" />
<TextBlock x:Name="txbUpdated" Text="{Binding Screenshot.Refreshed}" Margin="2" Grid.Row="0" FontWeight="Bold" FontSize="12" Grid.Column="0" HorizontalAlignment="Right" Foreground="Black" FontFamily="Segoe UI" />
</Grid>
<Border x:Name="brdScreenshoot" Grid.Column="2" Margin="2" Grid.Row="3" CornerRadius="5" >
<Grid >
<Image x:Name="imgScreenshoot" Margin="2" Source="{Binding Converter={StaticResource ImageConverter1}}" />
</Grid>
</Border>
<StackPanel Grid.Column="2" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,2">
<Button Content="Play" HorizontalAlignment="Center" Height="23" Margin="0,0,0,0" VerticalAlignment="Bottom" Width="42" Grid.Row="1"/>
<Button Content="Stop" HorizontalAlignment="Center" Height="23" Margin="2,0,0,0" VerticalAlignment="Bottom" Width="42" Grid.Row="1"/>
<Button Content="Cancel" HorizontalAlignment="Center" Height="23" Margin="2,0,0,0" VerticalAlignment="Bottom" Width="42" Grid.Row="1"/>
<Button Content="Refresh" HorizontalAlignment="Center" Height="23" Margin="10,0,0,0" VerticalAlignment="Bottom" Width="42" Grid.Row="1"/>
</StackPanel>
</Grid>
</Border>
</DataTemplate>
<ItemsPanelTemplate x:Key="MonitorPlayersItemsPaneltemplate">
<toolkit:WrapPanel/>
</ItemsPanelTemplate>
<local:ImageConverter x:Key="ImageConverter1" />
</ResourceDictionary>
</UserControl.Resources>
Declare the converter higher up, before it is used.

Content control contents sizing to fill in Silverlight 4

I have a style for a ContentControl which I want to use in places where I currently have a Border. When I use this, the child controls will not stretch to fill and only take a small amount of space. I've tried applying HorizontalAlignment="Stretch" to everything, but it doesn't work. What's wrong?
<Style x:Key="GradientPanel" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<Rectangle RadiusY="10" RadiusX="10" Stroke="Black" StrokeThickness="0">
<Rectangle.Effect>
<DropShadowEffect Opacity="0.56" ShadowDepth="1" BlurRadius="3" />
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFE1EAF3"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FFFAFBFD" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
...
Before (works fine):
<Border Style="{StaticResource SearchContainerBorder}" >
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ToggleButton Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" />
<ContentControl Grid.Row="0" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</Border>
After (replace Border with ContentControl):
<ContentControl Style="{StaticResource GradPanel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ToggleButton Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" />
<ContentControl Grid.Row="0" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>
</ContentControl>
You need to set the HorizontalContentAlignment="Stretch" and the VerticalContentAlignment="Stretch" settings on your outer ContentControl.
The default behaviour is to NOT stretch the contents of a container.
e.g. the first line should be:
<ContentControl Style="{StaticResource GradPanel}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch" >

Resources