列表框项目源绑定不起作用

时间:2015-10-30 16:51:55

标签: c# wpf listbox

我正在尝试将列表绑定到列表框。列表框绑定正在运行,但我无法将属性绑定到项模板。

这是我的班级

public class handle{
        public string smurfName;
        internal Process process;

        public handle(Process _pro, string _smuf)
        {
            process = _pro;
            smurfName = _smuf;
        }
    }

这是我的窗口构造函数。

public static ObservableCollection<handle> smurfList = new ObservableCollection<handle>();
    public GameMask()
        {
            InitializeComponent();
            runningSmurfs.ItemsSource = smurfList;

            handle newSmurf = new handle(null, "THISNAME");
            smurfList.Add(newSmurf);
        }

这是我的xaml

<ListBox HorizontalAlignment="Left" Height="200" Margin="3,41,0,0" VerticalAlignment="Top" Width="113" Name="runningSmurfs">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=smurfName}"></TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

不幸的是,我无法看到&#34; THISNAME&#34;在列表中,但如果我将Texblock Binding更改为文本,它可以正常工作。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您至少需要一个属性,以便您的绑定可以正常工作。 smurfName应该是一个属性,如果你实现INotifyPropertyChanged也会更好。

答案 1 :(得分:1)

在你的情况下,我认为你不需要实现INotifyPropertyChanged,但是你不能绑定到你想要做的字段

试试这个:

UPDATE b2
SET Total = (
 SELECT A.Total_1 + B.Total_2 + C.Total_3
    FROM
    (SELECT bill.quantity_1 * item.Price AS 'Total_1'
    FROM bill, item 
    WHERE item.itemid = bill.item_1
    AND bill.Orderid=b2.Orderid
    )A,

    (SELECT bill.quantity_2 * item.Price AS 'Total_2'
    FROM bill, item 
    WHERE item.itemid = bill.item_2
    AND bill.Orderid=b2.Orderid
    )B,

    (SELECT bill.quantity_3 * item.Price AS 'Total_3'
    FROM bill, item 
    WHERE item.itemid = bill.item_3
    AND bill.Orderid=b2.Orderid
    )C
)
FROM Bill b2

并在xaml中更改与SmurfName的绑定

答案 2 :(得分:0)

在您的句柄类中,为您的smurfName属性添加一个getter和setter:

public string smurfName { get; set; }