2012-06-10 19 views
6

Ich habe die folgenden main.xaml und usercontrol.Wie setze ich ein XAML-Benutzer-Steuerelement in einem Raster

Ich muss mehrmals das Benutzersteuerelement auf der zweiten Zeile, 2. Spalte des Rasters platzieren, indem ich Visual Studio benutze, Drag & Drop der Benutzersteuerung, so nehme ich an, dass ich es durch Code tun muss, ich weiß nur nicht, wie

MainPage.xaml

<Grid HorizontalAlignment="Left" Height="768" VerticalAlignment="Top" Width="1366" x:Name="grid" Background="Black"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="150"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition Width="250"/> 
     </Grid.ColumnDefinitions> 
     <Border BorderBrush="White" BorderThickness="3" Grid.Column="1" Background="Red" CornerRadius="30"/> 
     <TextBlock x:Name="txtCountry" Grid.Column="1" TextWrapping="Wrap" FontSize="36" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     <TextBlock x:Name="txtTime" Grid.Row="1" TextWrapping="Wrap" FontSize="180" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 

Usercontrol

<UserControl 
    x:Class="AlarmPro.TimeOnCity" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:AlarmPro" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="150" 
    d:DesignWidth="250"> 

    <Grid Background="Black"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="30"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Border BorderBrush="#FFDE6A6A" BorderThickness="1" Grid.Row="0" Grid.Column="0" Background="#FFDC4646"> 
      <TextBlock TextWrapping="Wrap" Text="TextBlock" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="16"/> 
     </Border> 
     <Border BorderBrush="Black" BorderThickness="1" Grid.Row="1" Background="#FFAE4F00"> 
      <TextBlock TextWrapping="Wrap" Text="TextBlock" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="36"/> 
     </Border> 

    </Grid> 
</UserControl> 

Antwort

8

Meinst du das?

<my:UserControlName Grid.Column="2" Grid.Row="2" ... /> 

<my: in diesem Fall ist der Alias ​​für die CLR-Namespace die UserControl in sich befindet. Es befindet sich auf der Spitze Ihrer XAML definiert ist, innerhalb des Tags <Window> oder <UserControl> je nach Kontext.

Zum Beispiel

<Window ... 
    xmlns:my="clr-namespace:AssemblyName" 
    ... 
/> 
+0

wo meine: herkommt? –

5

MainPage.xaml

<Page 
    x:Class="UserControlExample.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UserControlExample" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid x:Name="MainContent" Background="Azure" > 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Hidden" 
       VerticalScrollBarVisibility="Hidden">       
      <local:UserControl1 x:Name="MyHelloWorldUserControl" Grid.Row="1" /> 
     </ScrollViewer> 
    </Grid>   
</Page> 

UserControl1.xaml

<UserControl 
    x:Class="UserControlExample.UserControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UserControlExample" 
    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 Background="Bisque"> 
     <StackPanel> 
      <StackPanel Orientation="Horizontal" Height="81"> 
       <TextBlock Text="Your Name is" Foreground="Blue" FontSize="30" Margin="0,0,0,10"/> 
       <TextBox x:Name="Input" Background="White" Width="225" /> 
      </StackPanel> 
      <Button Content="Click Me" Foreground="Brown" FontSize="30" Click="Button_Click"/> 
      <TextBlock x:Name="Output" FontSize="100"/> 
     </StackPanel> 
    </Grid> 
</UserControl> 
+0

Aber Sie haben den besten Teil weggelassen. (Antwort: "[Nein, der Hintergrund meines Gitters ist Biskuit] (http://seinfeld.wikia.com/wiki/The_Yada_Yada#Quotes).") – ruffin

2

MainPage.xaml, ich bin Bindung ein Login Usercontrol durch die Verwendung von Namen Tempo: Xmlns: UC = "Clr-Namespace: Test.Views", da ich meine Benutzersteuerung in Ordner namens "Ansichten".

<ScrollViewer> 
<UC:Login BtnLoginClick="Login_BtnLoginClick"/> 
</ScrollViewer> 

login.cs

public partial class Login : UserControl { 

    public event EventHandler BtnLoginClick; 

    public Login() 
    { 
     InitializeComponent(); 
    } 

    private void btnLogin_Click(object sender, RoutedEventArgs e) 
    { 
     string userName = txtUserName.Text; 
     string userPassword = txtUserPassword.Password.Trim(); 
     if (userName != null && userName != string.Empty && userPassword != null &&  userPassword != string.Empty) 
     { 
      if (this.BtnLoginClick != null) 
      { 
       this.BtnLoginClick(this, e); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Invalid username or password"); 
     } 
    } 

}

Schließlich tun sie nicht vergessen haben, den Event-Handler in MainPage.xaml zu verwenden, um die Schaltfläche geklickt Ereignis von Login-Usercontrol zu erfassen andere Aktionen zu tun .

MainPage.xaml

<UC:Login BtnLoginClick="Login_BtnLoginClick"/> 

Here "BtnLoginClick" its ein Event-Handler in der [Benutzerkontrolle] Login.xaml definiert.

Erstellen Sie ein neues Ereignis für dieses "BtnLoginClick" -Ereignis, als ich "Login_BtnLoginClick" erstellt habe.

MainPage.cs

private void Login_BtnLoginClick(object sender, EventArgs e) 
{ 
Messagebox.Show("Event captured successfully"); 
////Here you can add your stuffs...  
} 
Verwandte Themen