我正在通过存储过程查询数据库并获取数据。我将其填充到这样的对象中:
private GetMiscVars _batchVariablesData;
public GetMiscVars BatchVariablesData
{
get { return _batchVariablesData; }
set
{
if (_batchVariablesData == value) return;
_batchVariablesData = value;
OnPropertyChanged("BatchVariablesData");
}
} 在我的XAML中我有这样一个:
<TreeView>
<TreeViewItem Header="Batch Data" ItemsSource="{Binding BatchVariablesData}">
<TreeViewItem.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding VarDesc}" />
</DataTemplate>
</TreeViewItem.HeaderTemplate>
</TreeViewItem>
</TreeView> 当我的代码运行时,我看到的是我的父节点是空的,而不是像我希望的那样说“批处理数据”,我的子节点返回这个DgTabData中用于调用数据库的DgTabData的名称。
我在哪里搞砸了?
谢谢
为了进一步澄清,我有一个存储过程,它返回如下所示的数据:
VarId EventId VarDesc
11 2489 WP1.WC01 Quantity
1196 2489 WP1.WC01 Brew Number
1197 2489 WP1.WC01 Operator Name
1216 2489 WP1.WC01 Integer Test
1217 2489 WP1.WC01 Logical Test
1218 2489 WP1.WC01 Float-4 Test
1219 2489 WP1.WC01 Float-3 Test 我想将VarDesc字段放在批处理数据标题下的TreeView中。一旦我弄清楚了这一点,我希望能够从在VarId中选择的项中获取TreeView和EventId值,因为我将使用这些值填充一个数据集。
发布于 2014-02-24 21:37:45
首先,TreeView显示分层数据。这意味着您的数据必须具有用于子节点的public集合属性。接下来,要显示分层数据,您需要声明一个HierarchicalDataTemplate,而不是试图按原来的方式定义控件。尝试以下XAML:
<TreeView ItemsSource="{Binding CollectionOfParents}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type YourPrefix.YourClassName}"
ItemsSource="{Binding CollectionOfChildrenPropertyInParent}">
<TextBlock Text="{Binding PropertyInParent}" /><!-- Parent DataTemplate -->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate> <!-- Child DataTemplate -->
<TextBlock Text="{Binding PropertyInChild}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>更新>>>
正如我所说,TreeView显示分层数据。这意味着您的数据必须具有用于子节点的公共集合属性。因此,创建一个类,比如名为Data的类,其中包含一个保存Batch Data文本的属性,比如一个名为Name的属性,以及一个ObservableCollection<string>属性,比方说,命名为Items来保存VarDesc列的值。
然后,您需要以任何您认为合适的方式使用从存储过程返回的项填充集合。最后,创建一个ObservableCollection<Data>属性,假设在代码后面或视图模型中命名为DataItems,并添加包含集合项的Data类。然后,您可以像这样绑定到TreeView:
<TreeView ItemsSource="{Binding DataItems}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type YourXamlNamespacePrefix.Data}"
ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Name}" /> <!-- Parent DataTemplate -->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate> <!-- Child DataTemplate -->
<TextBlock Text="{Binding}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>https://stackoverflow.com/questions/21997464
复制相似问题