【发布时间】:2014-01-20 22:25:23
【问题描述】:
假设我们有一个名为 MyClass 的类
public class MyClass
{
public bool MyProperty {get;set;}
}
我将 MyClass 列表连接到列表视图(DataContex 等)。
为了让 MyClass 项目看起来更漂亮,我在 listView 资源中定义了一个 DataTemplate。
<DataTemplate DataType="x:type local:MyClass">
我为 DataTemplate 中的每一行添加了一个扩展器。我添加了一个事件。
<Expander IsExpanded="Expander_Expanded_Method">
在代码中我有那个方法-
private void Expander_Expanded_Method(object sender, RoutedEventArgs e)
{
// implement
}
如何获取 MyClass 项的实例以更改其 MyProperty 值?
我试过用:
private void Expander_Expanded_Method(object sender, RoutedEventArgs e)
{
(sender as MyClass).MyProperty = something; // doesn't work :-(
(e.Source as MyClass).MyProperty = something // doesn't work :-(
}
我发誓我为这个东西搜索了几个小时,但我没有找到任何线索......
我也尝试过(作为 B 计划)找到一个示例,说明如何通过以下方式将 MyClass 的 MyProperty 从 XAML 更改为
IsExpanded={binding Path=MyProperty, Mode ="TwoWays"}
但它也不起作用...... 提前致谢
编辑
正如 Sheridan 建议的那样,我将添加更多信息。我会尽量让它变得非常简单:
- 我有一个 listView ui
- 和 MyClass 的列表
- 插入到 listView 中的 MyClass 列表
- 在每个 MyClass 实例中都有一个 MyOtherClass 列表
- MyOtherClass 实例也插入到 listView 中
- 所以 - 我们有一个包含 2 种项目的 listView,MyClass 和 MyOtherClass
- 在每个 MyClass 中都有一个扩展器(使用 DataTemplate 完成...)
- 我希望扩展器状态(展开/取消展开)将使当前 MyClass 中的 MyOtherClass 项目可见/折叠
谢谢!
【问题讨论】:
-
请说明您实际上想要做什么...当
Expander展开时,您想要将您的属性更改为什么值? -
嗨。 MyClass 有一个项目列表,这些项目也在同一个列表视图中。每个项目都绑定到 MyProperty 以设置其可见性。我希望当我展开扩展器时,项目会折叠起来。我设法做到了这一切。正如我所提到的,只需要通过扩展器设置 Myproperty 就可以了!谢谢