我有一個WPF ListView,其中我添加了具有字符串和圖像的對象。根據對象的其他內容,該圖像應該是有條件顯示的星形。在我的XAML中,我將它綁定到一個名爲「Brand」的屬性,該屬性返回一個BitmapImage。如果我總是試圖展示圖片,一切工作正常。如果我試圖有條件地顯示圖像(通過一些C#),我無法獲得ListView更新。wpf listview項更新,屬性事件處理程序爲空
我試過的是將INotifyPropertyChanged添加到添加到ListView中的對象,以便我可以手動觸發事件,只要我想要圖像出現。問題是該事件始終爲空。這就像ListView不訂閱它。
<ListView Name="MyListView" Grid.Row="3" SelectionMode="Multiple">
<ListView.View>
<GridView>
<GridViewColumn Header="Brand">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Brand}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
以下兩行是我如何將我的對象添加到ListView。數據從文件中讀出,我省略了一些變量設置。
LineItem li = new LineItem();
MyListView.Items.Add(li);
這是類看起來像減去其他屬性。
public class LineItem : IComparable, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public bool PersistedBrand { get { return m_brand; }
set {
m_brand = value;
Brand = null;
//PropertyChanged(this, new PropertyChangedEventArgs("Brand"));
} }
public BitmapImage Brand
{
get
{
if (ShowBrand)
{
return s_brandImage;
}
else
{
return null;
}
}
set
{
PropertyChanged(this, new PropertyChangedEventArgs("Brand"));
// EXCEPTION HERE ABOVE!
}
}
}
我在這裏理解綁定是如何工作的,我在這裏理解錯誤嗎?任何建議表示讚賞。
MJ
EDIT 1 I增加了更多的代碼。
這不回答你的問題,但你應該始終* *檢查的事件處理程序是否爲空第一(根據約翰的答案)。 –
我認爲我們需要看到更多的視圖模型類和/或更多的XAML。 –
我更新了代碼。這很簡單。沒有其他XAML更改值得注意,因爲它們只與屏幕上的其他項目有關。 –