以编程方式添加WPF UserControl没有样式

时间:2012-06-16 20:47:54

标签: c# wpf xaml user-controls styles

我正在尝试创建一个类似按钮的UserControl,它由边框和标签组成。直接在MainWindow的XAML中添加此UserControl时,它会正确呈现(它放在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。我试过找到有关这方面的信息,但我找不到任何东西。如果您有其他方法我可以采取,请提出建议。我想要的只是一个可点击的区域,有一些圆角,可以包含文字(一行或多行)。

我可以以编程方式应用样式,但不保留xaml中为UserControl定义的样式(边框,边距,颜色等)。

1 个答案:

答案 0 :(得分:1)

首先,您不需要为此创建自定义控件,您可以轻松地执行

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

如果你使用PlayerList.Children.Add(按钮);然后它添加到Wrappanel的末尾,并在XAML代码中添加它不是最后一个元素(可能)..

最后一个想法是你在测试时丢失了一些你在XAML中添加的属性(如aligment,margin等)

希望这有帮助。