我有一个绑定到 RIA 数据对象的数据网格。此数据网格是通过从 Visual Studio 中的数据源选项卡拖放表创建的。数据网格工作正常。
我添加了一个额外的列,我通过 DataGridTemplateColumn 在其上添加了一个组合框。此组合框绑定到域数据源。但是,组合框不包含任何数据。
我从 XAML 中获取组合框代码,并将其作为单独的控件粘贴到数据网格之外,组合框可以正常工作并显示数据。
为什么我的组合框在包含在数据网格中时不显示任何数据?我的 XAML 代码如下:
<navigation:Page x:Class="Chemical_Management_System.EditPermissions"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
d:DesignWidth="640" d:DesignHeight="480"
Title="EditPermissions Page" Width="640" HorizontalAlignment="Center" xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" xmlns:my="clr-namespace:Chemical_Management_System.Web" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
<Grid x:Name="LayoutRoot">
<Border BorderBrush="Silver" BorderThickness="1" Height="45" HorizontalAlignment="Left" Margin="10,10,0,0" Name="Border1" Style="{StaticResource HeaderBackground}" VerticalAlignment="Top" Width="618">
<TextBlock Height="23" Name="TextBlock21" Style="{StaticResource HeaderText}" Text="Edit Permissions" />
</Border>
<riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Permissions, CreateList=true}" Height="0" Name="PermissionsDomainDataSource" QueryName="GetPermissionsQuery" Width="0">
<riaControls:DomainDataSource.DomainContext>
<my:DataContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:PermissionLookups, CreateList=true}" Height="0" Name="PermissionLookupsDomainDataSource" QueryName="GetPermissionLookupsQuery" Width="0">
<riaControls:DomainDataSource.DomainContext>
<my:DataContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
<sdk:DataGrid AutoGenerateColumns="False" Height="366" HorizontalAlignment="Left" ItemsSource="{Binding ElementName=PermissionsDomainDataSource, Path=Data}" Margin="12,61,0,0" Name="PermissionsDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="615">
<sdk:DataGrid.Columns>
<sdk:DataGridCheckBoxColumn x:Name="DeputyColumn" Binding="{Binding Path=Deputy}" Header="Deputy" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="DescriptionColumn" Binding="{Binding Path=Description}" Header="Description" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="IDColumn" Binding="{Binding Path=ID, Mode=OneWay}" Header="ID" IsReadOnly="True" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="PermissionIDColumn" Binding="{Binding Path=PermissionID}" Header="Permission ID" Width="SizeToHeader" />
<sdk:DataGridCheckBoxColumn x:Name="PrimaryColumn" Binding="{Binding Path=Primary}" Header="Primary" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="UserIDColumn" Binding="{Binding Path=User.Name}" Header="User" Width="SizeToHeader" />
<sdk:DataGridTemplateColumn Header="Permission">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Height="23" HorizontalAlignment="Left" Name="ComboBox1" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Data, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue='',ElementName=PermissionLookupsDomainDataSource}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<ComboBox Height="23" HorizontalAlignment="Left" Margin="194,446,0,0" Name="ComboBox1" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Data, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue='',ElementName=PermissionLookupsDomainDataSource}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>