Ich habe eine benutzerdefinierte Schaltfläche für meine App erstellt, im Inhalt hat es eine Textblock
und eine SymbolIcon
, beide in einem Grid
platziert. Dies ist der sehr einfache CodeFehler beim Laden Benutzerdefiniertes Benutzersteuerelement
<UserControl
...>
<Grid>
<Button Name="ButtonControl">
<Button.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<SymbolIcon Grid.Column="0"
Symbol="Italic"
Name="SymbolIconColumn"
/>
<TextBlock Grid.Column="1"
Text=""
Name="TextBlockColumn"
/>
</Grid>
</Button.Content>
</Button>
</Grid>
</UserControl>
Und in seiner Klasse Datei, habe ich ein paar Eigenschaften erklärt:
SymbolIcon
im Grunde setzt dasSymbol
Eigentum derSymbolIcon
Text
Sets dieText
Eigentum derTextblock
Click
Sätze th eClick
Ereignishandler für dasButton
Dies ist der Code hinter:
public string Text
{
get
{
return (string)GetValue(TextProperty);
}
set
{
SetValue(TextProperty, value);
TextBlockColumn.Text = value;
}
}
public Symbol SymbolIcon
{
get
{
return (Symbol)GetValue(SymbolIconProperty);
}
set
{
SetValue(SymbolIconProperty, value);
}
}
public RoutedEventHandler Click
{
get
{
return (RoutedEventHandler)GetValue(ClickProperty);
}
set
{
SetValue(ClickProperty, value);
ButtonControl.Click += value;
}
}
public RoutedEventHandler Click
{
get
{
return (RoutedEventHandler)GetValue(ClickProperty);
}
set
{
SetValue(ClickProperty, value);
ButtonControl.Click += value;
}
}
ich alle die sie mit ihren DependencyProperty.Register Funktion
public static readonly DependencyProperty SymbolIconProperty =
DependencyProperty.Register("SymbolIcon", typeof(Symbol),
typeof(TimerButton), new PropertyMetadata(Symbol.Italic));
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string),
typeof(TimerButton), new PropertyMetadata(""));
public static readonly DependencyProperty ClickProperty =
DependencyProperty.Register("Click", typeof(RoutedEventHandler),
typeof(TimerButton), new PropertyMetadata(null));
Ich glaube, ich habe registriert hab alles gemacht, oder? Also, wenn ich den Namespace in meine Seite und versuchen, die Last, die es, wie diese
<Page
...
xmlns:bt="using:MyProject.Resources"...>
<bt:TimerButton
SymbolIcon="Accept"
Text="Accept"
/>
der Designer nicht einmal laden, fügen und es gibt mir diese
System.Runtime.Remoting .RemotingException [9652] Designer-Prozess wurde unerwartet beendet!
Auch der Debugger stürzt ab, wenn die Seite geladen werden muss.
UWP oder WPF? Es kann nicht beides sein. – Clemens
"Ich denke, ich habe alles gemacht, oder?" Nicht genau. Sie sollten nichts anderes als 'SetValue' in der Setter-Methode des CLR-Wrappers einer Abhängigkeitseigenschaft, z. Rufen Sie 'TextBlockColumn.Text = Wert;' nicht auf. Stattdessen sollten Sie die Text-Eigenschaft des TextBlocks an die Text-Eigenschaft Ihres Benutzersteuerelements binden. Gleiches gilt für SymbolIcon. – Clemens
Danke. Es ist übrigens UWP, wie binde ich die Text-Eigenschaft korrekt? –