好吧,我制作了自定义的usercontrol,它“简单地”是标签和文本框的组合。
<UserControl x:Class="testit.LabelTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="300">
<DockPanel LastChildFill="False">
<TextBox x:Name="textBox" TextWrapping="Wrap" DockPanel.Dock="Right" VerticalAlignment="Center" Text="{Binding TextBoxText}" />
<Label x:Name="label" DockPanel.Dock="Right" Target="{x:Reference textBox}" HorizontalAlignment="Right" VerticalAlignment="Center" Content="Label Text"/>
</DockPanel>
</UserControl>
然后我创建了一个带有dependecy属性的usercontrol类:
using System.Windows;
using System.Windows.Controls;
namespace simtest
{
/// <summary>
/// Interaction logic for LabelTextBox.xaml
/// </summary>
public partial class LabelTextBox : UserControl
{
public string TextBoxText {
get { return (string)GetValue(TextBoxTextProperty); }
set { SetValue(TextBoxTextProperty, value); }
}
public readonly static DependencyProperty TextBoxTextProperty =
DependencyProperty.Register("TextBoxTextProperty",
typeof(string), typeof(LabelTextBox), new UIPropertyMetadata(null));
public LabelTextBox() {
InitializeComponent();
DataContext = this;
}
}
}
现在这个“工作”就像编译一样。如果我使用上面的控制:
<local:LabelTextBox TextBoxText="foobar"></local:LabelTextBox>
在跑步时会正确显示 - 。
但是我需要这个文本框的每个元素我希望能够适应 - 高度宽度等等。这不是很理想:我可以这样做,以便我可以直接编辑LabelTextBox'TextBox ?