0

境界線とラベルで構成されるボタンのような UserControl を作成しようとしています。この UserControl を MainWindow の XAML に直接追加すると、正しくレンダリングされます (WrapPanel に配置されます) が、プログラムで追加するとまったく同じに見えません。境界線も背景色もありません。ラベルのテキスト サイズが間違っていて、テキストの色も間違っています。

これは私のユーザーコントロールです:

<UserControl x:Class="Jishi.SonosPartyMode.UserControls.Player"
             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="150" d:DesignWidth="300"
             Width="200"
             Height="100">
    <Border BorderBrush="#086EAA" CornerRadius="8,8,8,8"  BorderThickness="4" Margin="15" Padding="15px" VerticalAlignment="Center" Background="#0A4069">
        <Label Name="PlayerName" TextElement.Foreground="White" TextElement.FontSize="20px">asdasdasd</Label>
    </Border>
</UserControl>

追加するときは、次のように呼び出します。

var button = new Player { Content = player.Properties.RoomName, DataContext = player.Properties.UDN };
PlayerList.Children.Add( button );

PlayerList は実際の WrapPanel であり、Player は私の UserControl です。これに関する情報を見つけようとしましたが、何も見つかりません。私にできる別のアプローチがある場合は、提案をお願いします。私が欲しいのは、テキスト (1 つまたは複数の行) を含むことができるいくつかの丸い角を持つクリック可能な領域です。

プログラムでスタイルを適用できますが、UserControl の xaml で定義されたスタイルは保持されません (境界線、余白、色など)。

4

1 に答える 1

1

まず、このためのカスタム コントロールを作成する必要はありません。簡単に作成できます。

var button = new Border { *border properties*, Content = new Lable {Content="dfsdfsdfsd"}};

PlayerList.Children.Add( button ); を使用すると、次に、Wrappanel の末尾に追加し、XAML コードでは、最後の要素としてではなく (おそらく) 追加します。

最後のアイデアは、テスト時に XAML に追加したいくつかのプロパティ (配置、マージンなど) を失ったことです。

お役に立てれば。

于 2012-06-18T02:53:45.117 に答える