1

我使用 Expression Blend 创建了一个自定义控件:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    x:Class="MyProject.EditableField"
    d:DesignWidth="286" d:DesignHeight="20">

    <Grid x:Name="LayoutRoot">
        <TextBlock HorizontalAlignment="Left" Width="95" Text="Label:" TextWrapping="Wrap" x:Name="Label" FontSize="12"/>
        <TextBox Margin="99,0,0,0" x:Name="Value" Text="Value" TextWrapping="Wrap"/>
    </Grid>
</UserControl>

它包含一个 TextBlock 标签和一个 TextBox 值。我想要的是使用它们自己的标签和值将其中的多个添加到我的 XAML 中,可能是这样的:

<MyProject:EditableField Margin="30,180,0,0" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top" Width="286" x:Name="FaxNumber">
            <Label>
                <Text>Fax number:</Text>
            </Label>
            <Value>
                <Contents>
                    111-222-333
                </Contents>
            </Value>
        </MyProject:EditableField>

当我说也许,这显然是行不通的。添加它们的正确语法是什么?

4

2 回答 2

2

最简单的方法是在后面的代码中添加两个新属性,例如 LabelText 和 ContentText。将它们连接起来以分别设置和获取 TextBlock 控件和 TextBox 控件的 Text 属性。

然后你会使用:

<MyProject:EditableField LabelText="Fax number:" ContentText="111-222-333" ...

正确的方法是这样做,实现两个依赖属性(从而支持动画、数据绑定等),并将子控件的控件文本绑定到这些属性。

于 2009-02-18T14:58:47.697 回答
0

在后面的代码中:

public string LabelText
{
    get { return Label.Text; }
    set { Label.Text = value; }
}

public string ContentText
{
    get { return Value.Text; }
    set { Value.Text = value; }
}
于 2009-02-18T15:41:12.990 回答