Я создал пользовательскую кнопку для своего приложения, в содержании у нее есть Textblock
и SymbolIcon
, оба помещенные в Grid
. Это очень простой кодОшибка при загрузке Пользовательский UserControl
<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>
И в своем классе файл, я объявил несколько свойств:
SymbolIcon
в основном устанавливаетSymbol
свойствоSymbolIcon
Text
наборы имуществоText
Textblock
Click
комплекты th еClick
событие ОбработчикButton
на это код позади:
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;
}
}
Я зарегистрировал все они со своей функцией DependencyProperty.Register
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));
Я думаю, что я Все сделано, верно? Так что, если я добавить пространство имен в мою страницу и попробуйте загрузить его, как этот
<Page
...
xmlns:bt="using:MyProject.Resources"...>
<bt:TimerButton
SymbolIcon="Accept"
Text="Accept"
/>
дизайнер даже не загрузится, и это дает мне этот
system.runtime.remoting .RemotingException [9652] Процесс конструктора неожиданно прекратился!
Кроме того, отладка сбрасывается, когда страница загружается.
UWP или WPF? Это не может быть и то, и другое. – Clemens
«Думаю, я все сделал, верно?» Не совсем. У вас не должно быть ничего, кроме 'SetValue' в методе setter оболочки CLR свойства зависимости, например. не вызывать 'TextBlockColumn.Text = значение;'. Вместо этого вы должны привязать свойство TextBlock Text к свойству Text вашего UserControl. То же самое для SymbolIcon. – Clemens
Спасибо. Это UWP, кстати, Как связать свойство Text правильно? –