При перетаскивании моих пользовательских элементов управления в представление дизайна они просто вставляются пустыми в xaml.cs.
<MyCustomInputBoxView HorizontalAlignment="Left" Margin="167,103,0,0" VerticalAlignment="Top"/>
Однако, когда я перетаскиваю текстовое поле в представление дизайна из панели инструментов, оно вставляет переменные по умолчанию, например:
<TextBox HorizontalAlignment="Left" Margin="69,0,0,0" Text="TextBox" TextWrapping="Wrap" Width="120"/>
Уже заполнено в xaml.
Как установить эти значения по умолчанию для моих собственных пользовательских элементов управления? Я искал везде и даже не знаю, что искать, чтобы найти ответ.
Я бы хотел, чтобы мой элемент управления при перетаскивании в представление «Дизайн» выглядел так:
<MyCustomInputBoxView TextBoxContent="Text" Label="Text" HorizontalAlignment="Left" Margin="167,103,0,0" VerticalAlignment="Top"/>
Подобно тому, как TextBox выше имеет Text=TextBox и TextWrapping=Wrap, я хотел бы, чтобы мой автоматически вводил TextBoxContent=Text и Label =Текст
Я просмотрел исходный код TextBox.cs и не вижу никаких очевидных моментов, которые заставляли бы его делать это автоматически. Вот свойство зависимости и общедоступное свойство для TextBox Text.
/// <summary>
/// The DependencyID for the Text property.
/// Default Value: ""
/// </summary>
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register(
"Text", // Property name
typeof(string), // Property type
typeof(TextBox), // Property owner
new FrameworkPropertyMetadata( // Property metadata
string.Empty, // default value
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | // Flags
FrameworkPropertyMetadataOptions.Journal,
new PropertyChangedCallback(OnTextPropertyChanged), // property changed callback
new CoerceValueCallback(CoerceText),
true, // IsAnimationProhibited
UpdateSourceTrigger.LostFocus // DefaultUpdateSourceTrigger
));
а также
/// <summary>
/// Contents of the TextBox.
/// </summary>
[DefaultValue("")]
[Localizability(LocalizationCategory.Text)]
public string Text
{
get { return (string) GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
Спасибо всем, кто прочитал это и может помочь.
Изменить: пример Syncfusion с SfTextInputLayout, когда я перетаскиваю это в представление дизайна, он автоматически добавляет дочерний элемент текстового поля и заполняет текст этого текстового поля Джоном.
<Syncfusion:SfTextInputLayout Hint="Name">
<TextBox Text="John"/>
</Syncfusion:SfTextInputLayout>
Hint=name и Text=John автоматически добавлялись при перетаскивании элемента управления в представление дизайна. Я хотел бы сделать что-то подобное с моими элементами управления.