【发布时间】:2015-10-30 19:58:41
【问题描述】:
我有一个包含两个嵌套类的类。两个嵌套类的属性都应显示在 WPF ListView 中。创建 ListView 时,第二个嵌套类 (BClass) 为空。按下按钮后(例如) BClass 得到一个值。 我的问题是 ListView 没有用这个新值更新。
非常感谢您的帮助。谢谢。
这是我快速而肮脏的示例代码(来自 Caliburn Micro 的 PropertyChangedBase):
namespace WpfApplication1
{
public class AClass : PropertyChangedBase
{
public string prop2;
public string Prop2
{
get { return prop2; }
set
{
prop2 = value;
NotifyOfPropertyChange("Prop2");
}
}
}
public class BClass : PropertyChangedBase
{
public string prop1;
public string Prop1
{
get { return prop1; }
set
{
prop1 = value;
NotifyOfPropertyChange("Prop1");
}
}
}
public class CClass : PropertyChangedBase
{
public AClass a;
public AClass A
{
get { return a; }
set
{
a = value;
NotifyOfPropertyChange("A");
}
}
public BClass b;
public BClass B
{
get { return b; }
set
{
b = value;
NotifyOfPropertyChange("B");
}
}
}
public partial class MainWindow : Window
{
private List<CClass> cs = new List<CClass>();
public MainWindow()
{
InitializeComponent();
cs.Add(new CClass { A = new AClass { Prop2 = "WWW" } });
listView.ItemsSource = cs;
}
private void button_Click(object sender, RoutedEventArgs e)
{
cs.First().B = new BClass { Prop1 = "EEE" };
}
}
}
XAML 代码:
<Grid>
<ListView x:Name="listView" HorizontalAlignment="Left" Height="248" Margin="63,39,0,0" VerticalAlignment="Top" Width="403">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding A.Prop2}" />
<GridViewColumn DisplayMemberBinding="{Binding B.Prop1}" />
</GridView>
</ListView.View>
</ListView>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="50,298,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
</Grid>
【问题讨论】:
-
尝试将您的 ItemSource 绑定到 ObservableCollection
而不是 List。 -
这些都不是“嵌套”类,它们是
CClass的简单成员属性。 -
已经尝试过 ObservableCollection 没有成功。
标签: c# wpf listview binding nested