ListBox不在WPF中使用数据绑定显示字符串(但是bools)

时间:2014-01-22 10:18:12

标签: c# wpf data-binding listbox

我想在列表框中显示一个字符串和三个bool,因此我创建了一个ItemTemplate:

    <ListBox x:Name="lstVars" Margin="10,41" Grid.ColumnSpan="4" Grid.Column="1">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <WrapPanel Height="30">
                    <TextBlock  Text="{Binding description}" VerticalAlignment="Center" HorizontalAlignment="Left" Width="200"/>
                    <CheckBox Margin="3" Content="a" IsChecked="{Binding save}" Width="200"/>
                    <CheckBox Margin="3" Content="b" IsChecked="{Binding displayBoard}"  Width="200"/>
                    <CheckBox Margin="3" Content="c" IsChecked="{Binding displayGraph}" Width="200"/>
                </WrapPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我创建了一个测试类,因为我的原始类不起作用(但是测试类会出现相同的“错误”):

public class test
{
    public String description;
    public bool save { get; set; }
    public bool displayBoard { get; set; }
    public bool displayGraph { get; set; }

    public test(String description, bool save, bool displayBoard, bool displayGraph)
    {
        this.description = description;
        this.save = save;
        this.displayBoard = displayBoard;
        this.displayGraph = displayGraph;
    }
}

当我向列表框添加一些值时,不显示字符串

lstVars.Items.Add(new test("teststring", true, false, true));

listbox

我首先认为文本只是在一个不可见的行中但是当我写Text="123test"而不是Text="{Binding description}"时,它会显示123test,就像它应该的那样。

1 个答案:

答案 0 :(得分:2)

您必须将绑定对象声明为属性。就像你的布尔属性一样。

public String description {get; set;}