2016-11-29 2 views
0

Wir verwenden XamlReader, um Benutzern zu ermöglichen, UI in unserer App dynamisch zu definieren.XamlReader Dynamisches Ereignis mit benutzerdefiniertem Code

Wenn sie z. B. Grid mit mehreren Schaltflächen definieren möchten, kann dies durch Definieren von xaml string erfolgen.

var xaml = ` 
<Grid xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Height='600' Background='Gray'> 
       <Grid.ColumnDefinitions> 
         <ColumnDefinition Width='2*' /> 
         <ColumnDefinition Width='1*' /> 
         <ColumnDefinition Width='1*' /> 
       </Grid.ColumnDefinitions> 
       <Grid.RowDefinitions> 
         <RowDefinition Height='2*' /> 
         <RowDefinition Height='1*' /> 
         <RowDefinition Height='1*' /> 
       </Grid.RowDefinitions> 
       <TextBlock Name='FirstName' xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Text='TESTING' Grid.Row='0' Grid.Column='0' Height='20' /> 
       <TextBox Name='LastName' xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Text='TESTING' Grid.Row='1' Grid.Column='0' Height='20' />     
     <Button Grid.Column='1'>Button 2</Button> 
       <Button Grid.Column='2'>Button 3</Button> 
       <Button Grid.Column='1' Grid.Row='1'>Button 5</Button> 
       <Button Grid.Column='2' Grid.Row='1'>Button 6</Button> 
       <Button Grid.Row='2'>Button 7</Button> 
       <Button Grid.Column='1' Grid.Row='2'>Button 8</Button> 
       <Button Grid.Column='2' Grid.Row='2'>Button 9</Button> 
</Grid> 
`; 

var control = Windows.UI.Xaml.Markup.XamlReader.Load(xaml) as UIElement; 

Wir wollen aber auch Benutzer der Lage sein, Ereignisse zu definieren. Wenn Sie beispielsweise auf Schaltfläche 1 klicken, wird ein Meldungsfeld angezeigt. Klicken auf Button 2 wird etwas anderes tun.

Wir wollen, dass sie in der Lage sind, den Code selbst zu spezifizieren, ähnlich dem XamlReader.Load.

Gibt es eine Möglichkeit, dies zu tun?

Antwort

0

Leider nicht. UWP ermöglicht es Ihnen nicht, C# -Code zur Laufzeit zu generieren oder zu kompilieren. Sie könnten nur einfache Expression Bäume erstellen, aber das ist in Ihrem Fall nicht wirklich nützlich.

Auch wenn Sie die MSDN Documentation überprüfen, heißt es

Die XAML sollte nicht x angeben versuchen: Class-Attribut, oder schließen alle XAML-Attribute für Event-Handler

Aus dieser es ist ganz klar, dass es nicht für diesen Zweck ausgelegt ist.

Verwandte Themen