UserControl:
<UserControl x:Class="Scores.Views.UserControls.MenuBar"
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"
xmlns:pages="clr-namespace:Scores.Views.Pages"
xmlns:local="clr-namespace:Scores.Views.UserControls"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
mc:Ignorable="d"
HorizontalAlignment="Stretch"
Height="70" d:DesignWidth="900">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<Menu>
<MenuItem Header="File" FontSize="14">
<MenuItem Name="btnExit" Header="Exit" Click="btnExit_Click"/>
</MenuItem>
<MenuItem Header="Create" FontSize="14"/>
<MenuItem Header="Config" FontSize="14"/>
<MenuItem Header="Database" FontSize="14"/>
<MenuItem Header="Help" FontSize="14"/>
</Menu>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Name="btnBack" Style="{DynamicResource ButtonStyleNoHover}"
Width="60" ToolTip="Back"
BorderThickness="0,0,0,0" Grid.Column="5" Margin="3"
Click="btnBack_Click"
Visibility="{Binding ElementName=MenuBar, Path=btnBackVisibility, Mode=TwoWay}">
<Button.Background>
<ImageBrush ImageSource="/Views/images/left.png" Stretch="Uniform"/>
</Button.Background>
</Button>
<Button Style="{DynamicResource ButtonStyleNoHover}" Name="btnNext"
Width="60" ToolTip="Back"
BorderThickness="0,0,0,0" Grid.Column="6" Margin="3"
Click="btnNext_Click"
Visibility="{Binding ElementName=MenuBar, Path=btnNextVisibility}">
<Button.Background>
<ImageBrush ImageSource="/Views/images/right.png" Stretch="Uniform"/>
</Button.Background>
</Button>
</Grid>
</Grid>
</UserControl>
UserControl Code Behind:
namespace Scores.Views.UserControls
{
public partial class MenuBar : UserControl
{
public MenuBar()
{
InitializeComponent();
this.DataContext = this;
MenuBar.VisibilityProperty.OwnerType.GetField("btnBack");
MenuBar.VisibilityProperty.OwnerType.GetField("btnNext");
btnBackVisibility = Visibility.Hidden;
btnNextVisibility = Visibility.Hidden;
}
public static readonly RoutedEvent ClickBkEvent = EventManager.RegisterRoutedEvent("ClickBk", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MenuBar));
public static readonly RoutedEvent ClickNxEvent = EventManager.RegisterRoutedEvent("ClickNx", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MenuBar));
public event RoutedEventHandler ClickBk;
public event RoutedEventHandler ClickNx;
public Visibility btnBackVisibility
{
get { return (Visibility)GetValue(btnBackVisibilityProperty); }
set { SetValue(btnBackVisibilityProperty, value); }
}
public static DependencyProperty btnBackVisibilityProperty =
DependencyProperty.Register("btnBackVisibility", typeof(Visibility), typeof(MenuBar), new PropertyMetadata(Visibility.Visible));
public Visibility btnNextVisibility
{
get { return (Visibility)GetValue(btnNextVisibilityProperty); }
set { SetValue(btnNextVisibilityProperty, value); }
}
public static DependencyProperty btnNextVisibilityProperty =
DependencyProperty.Register("btnNextVisibility", typeof(Visibility), typeof(MenuBar), new PropertyMetadata(Visibility.Visible));
private void btnBack_Click(object sender, RoutedEventArgs e)
{
if (ClickBk != null)
{
ClickBk(this, e);
}
}
private void btnNext_Click(object sender, RoutedEventArgs e)
{
if (ClickNx != null)
{
ClickNx(this, e);
}
}
}
}
MainWindow:
<Window x:Class="Scores.MainWindow"
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"
xmlns:local="clr-namespace:Scores"
xmlns:UserControls="clr-namespace:Scores.Views.UserControls"
xmlns:UserPages="clr-namespace:Scores.Views.Pages"
mc:Ignorable="d"
Height="680" Width="1010"
Title="ScoreCards"
WindowStyle="None"
ResizeMode="CanResize" AllowsTransparency="False">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="70" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<UserControls:MenuBar x:Name="uCtrl" ClickBk="btnMove_Click" ClickNx="btnMove_Click"/>
<Grid Grid.Row="1" Grid.RowSpan="2">
<Frame Name="PageFrame" Height="Auto" Margin="0,0,0,60"></Frame>
</Grid>
<Grid Grid.Row="2" Background="#0000FF" Height="20"
VerticalAlignment="Top">
<TextBlock Name="txtBlk"
VerticalAlignment="Center" HorizontalAlignment="Center"
FontSize="8" Text="XXXXXXXXXXX"
Foreground="#FFFFFF" FontWeight="Bold"
Grid.Row="3"/>
<Image Source="/Views/images/logo.png" Stretch="Uniform"
Width="15"
Grid.Row="2" Grid.Column="0"/>
</Grid>
</Grid>
</Window>
My XAML Page Code Behind being loaded:
public PageOutput()
{
InitializeComponent();
dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName;
pName = Assembly.GetCallingAssembly().GetName().Name;
xmlFile = dir + "\\" + pName + "\\Views\\data\\Teams.xml";
// This is where I want to unhide the two Button Controls inside my UserControl MenuBar...
// btnBack and btnNext
//
// Here is what I have tried so far:
//
// MenuBar.btnBackVisibilityProperty = Visibility.Visible;
//
// MenuBar.btnBackVisibilityProperty = SetValue(MenuBar.btnBackVisibilityProperty, value:
Visibility.Visible);
}
// ...
}