首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF中为ListBox创建ListBox代码

在WPF中为ListBox创建ListBox代码
EN

Stack Overflow用户
提问于 2014-04-15 09:21:16
回答 2查看 6.8K关注 0票数 3

我试图以编程的方式为一个ItemTemplate创建一个ListBox,但它不起作用。我知道在XAML中我可以有这样的东西:

代码语言:javascript
复制
<ListBox x:Name="listbox" BorderThickness="0" Margin="6" Height="400">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Margin="0" Background="Red" Foreground="White" FontSize="18" Text="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

但是,当我试图以编程方式获得上述结果时,我面临一个问题,就是绑定TextBox.TextProperty

代码语言:javascript
复制
var textblock = new FrameworkElementFactory(typeof(TextBlock));

// Setting some properties
textblock.SetValue(TextBlock.TextProperty, ??);
var template = new ControlTemplate(typeof(ListBoxItem));
template.VisualTree = textblock;

请在这个问题上帮助我。我在网上找不到关于它的任何东西。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-15 09:54:51

尝试在绑定中使用点.,这相当于{Binding}

示例:

XAML

代码语言:javascript
复制
<Window x:Class="MyNamespace.MainWindow"
        ...
        Loaded="Window_Loaded">

    <ListBox Name="MyListBox" ... />
</Window>

Code-behind

代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        var textBlockFactory = new FrameworkElementFactory(typeof(TextBlock));
        textBlockFactory.SetValue(TextBlock.TextProperty, new Binding(".")); // Here
        textBlockFactory.SetValue(TextBlock.BackgroundProperty, Brushes.Red);
        textBlockFactory.SetValue(TextBlock.ForegroundProperty, Brushes.Wheat);
        textBlockFactory.SetValue(TextBlock.FontSizeProperty, 18.0);

        var template = new DataTemplate();            
        template.VisualTree = textBlockFactory;

        MyListBox.ItemTemplate = template;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2014-04-15 09:34:39

尝试这样做,方法是将"listbox“与ItemsSource绑定,并在下面指定数据板,如您想要绑定名称,则只需编写{Binding }即可。

代码语言:javascript
复制
 <ListBox x:Name="listbox" BorderThickness="0" Margin="6" Height="400" ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Margin="0" Background="Red" Foreground="White" FontSize="18" Text="{Binding Name}" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23079496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档