1

ExpressionBlendを使用してカスタムコントロールを作成しました。

<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 などの 2 つの新しいプロパティをコード ビハインドに追加することです。これらを接続して、TextBlock コントロールと TextBox コントロールの Text プロパティをそれぞれ設定および取得します。

次に、次を使用します。

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

正しい方法は、同じことを行い、2 つの依存関係プロパティを実装し (したがって、アニメーション、データ バインディングなどをサポート)、子コントロールのコントロール テキストをこれらのプロパティにバインドすることです。

于 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 に答える