1

私はWPFが初めてで、次のようにユーザーコントロールを作成しています:

<UserControl x:Class="WpfApplication3.MyUserControl"
         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" 
         x:Name="MyUserControl2"
         d:DesignHeight="300" d:DesignWidth="300" Background="Coral">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="20"/>
        <RowDefinition Height="20"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Button Content="a" Grid.Row="0"/>
    <Button Content="b" Grid.Row="1"/>
    <Button Content="c" Grid.Row="2"/>
    <ContentPresenter Grid.Row="3"/>
</Grid>

オレンジ色の領域がコンテンツのプリセッターである場合、これにより次のレイアウトが生成されます。

オレンジ色の領域はコンテンツ プレゼンターです

ユーザー コントロールを使用するメイン ウィンドウで、コンテンツ プリセッターにコントロールを挿入したい

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication3"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <local:MyUserControl>
        <local:MyUserControl.Content>
            <Button Content="d"/>
        </local:MyUserControl.Content>
    </local:MyUserControl>
</Grid>

次のレイアウトが得られると思います。

ここに画像の説明を入力

代わりに、ユーザー コントロール全体がボタン d によってオーバーラップされます。

どうすればそうすることができますか?

4

2 に答える 2

1

-にbutton身を置いてみてください。Main Window

<Grid>
    <local:MyUserControl/>
    <Button Content="d"/>
</Grid>

また

<Grid>
    <Grid.Resources>
       <DataTemplate x:Key="MyContent">
          <Button Content="d"/>
       </DataTemplate>
    </Grid.Resources>
    <local:MyUserControl/>
</Grid>

そしてあなたのユーザーコントロールで -

 <ContentPresenter Grid.Row="3" ContentTemplate="{DynamicResource MyContent}"/>
于 2013-08-04T09:21:07.837 に答える
0

私はそれがうまくいかないことを確信しています。MyControl のコンテンツをボタンに設定すると、ユーザー コントロールのコンテンツ全体がボタンになるはずです。ユーザーコントロールにプロパティが必要であり、コンテンツプレゼンターをそれにバインドする必要があると思います。

MyUserControl.SubContent {get; のようなものです。set;} 次に、ContentPresenter をそれにバインドできます。

于 2013-08-04T09:20:51.680 に答える