0

新しい Silverlight コンテナー コントロールを作成したいのですが、コントロールには既定で [保存] ボタンと [キャンセル] ボタンの 2 つのボタンが含まれている必要があります。ユーザーがメイン ページでこのコントロールを使用する場合、テキスト ボックス、コンボなどの新しいコントロールをこのコントロールに追加できる必要があります。また、btn_SaveClick や btn_CancelClick などのデフォルト ボタンのイベントは、ユーザーがコードでコーディングできるようにする必要があります。メインページの後ろに.そのようなコントロールを作成することは可能ですか?
PS:現在、VS2010 で SilverLight5 を使用しています。

4

1 に答える 1

0

これは間違いなく可能です。まず、ContentControl から派生したクラスが必要です。

public class MyControl : ContentControl ...

次に、XAML リソース ファイルに次のようなコードが必要です。

<!-- MyControl -->
<Style TargetType="me:MyControl">
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="BorderMargin" Value="4,4,4,0" />
    <Setter Property="FooterMargin" Value="4,0,4,4" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="me:MyControl">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>

                    <!-- Content -->
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />

                    <!-- Footer Buttons -->
                    <Grid x:Name="grdFooter" Grid.Row="1" Background="{StaticResource Footer_Bkg}" Margin="{TemplateBinding FooterMargin}">
                        <!--Buttons here-->
                    </Grid>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

最後に、ページで使用するには、次のようなものが必要です。

<me:MyControl x:Name="MainPage">
    <Grid x:Name="LayoutRoot">
        <!--Cool stuff here-->
    </Grid>
</me:MyControl>
于 2012-07-13T15:24:08.617 に答える