如何更改用户控件中子元素的元素。 - 在设计师

时间:2017-07-02 13:25:42

标签: c# wpf xaml custom-controls

好吧,我制作了自定义的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 ?

0 个答案:

没有答案