我正在使用C#7,.Net 4.7.2和WPF 4.5.2
我想显示分层数据。因此,我使用ListBox作为顶级控件,使用ListView作为子级控件。不管任何样式,ListBox的DataTemplate都是这样的
<DataTemplate>
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding SomeTextProperty}" />
<ListView Grid.Row="1" ItemsSource="{Binding SubDataClasses}"
ItemContainerStyle="{DynmicRessource MyListViewItem}" />
</Grid>
</Border>
</DataTemplate>
在DataContext中,有一个名为MyDataSource的属性,ListBox的ItemsSource绑定到该属性。该物业看起来像这样
public ObservableCollection<MyMainDataClass> MyDataSource { get; set; }
最后但并非最不重要的数据类:
public class MySubDataClass
{
public string SomeValue { get; set; }
}
public class MyMainDataClass
{
public string SomeTextProperty { get; set; }
public ObservableCollection<MySubDataClass> SubDataClasses { get; set; }
}
ListBox中的绑定工作正常。但是 SomeTextProperty 恰好可以正确显示。属于每个 MyMainDataClass 的 MySubDataClasses 的数量也是正确的。
但是 SomeValue 的内容甚至根本不会消失。您所看到的仅是类 MySubDataClass 的名称。通常,在这种情况下,存在绑定错误,例如,绑定中的属性名称拼写错误。就我而言不是。但是,一定有问题。
我用 diag:PresentationTraceSources.TraceLevel = High 检查了绑定。但是Visual Studio的Output-Window根本不显示任何内容。没有信息,没有警告,没有错误。没有什么绝对的。在ListBox的ItemsSource的绑定上进行相同的跟踪可以正确显示所有内容。
在测试场景中,我还单独尝试了ListView。正常工作。因此,ListView本身并没有什么问题,但作为ListBox的子控件。
请问有人可以帮我吗?
谢谢。
添加:
ListViewItem的样式如下
<Style x:Key="MyListViewItem" TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<TextBox Text="{Binding SomeValue}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:-1)
我认为ListViewItems的TextBox应该绑定MySubDataClass的属性
<Style x:Key="MyListViewItem" TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<TextBox Text="{Binding MySubDataClass.XXXX}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:-1)
# @runnable
class MyClass
# @runnable
def say_hello
puts 'Hello!'
end
end
像这样的代码,它起作用了。图像就是结果。enter image description here