0

RIA 데이터 객체에 바인딩 된 DataGrid가 있습니다. 이 DataGrid는 Visual Studio의 데이터 소스 탭에서 테이블을 드래그 앤 드롭하여 만들었습니다. DataGrid 잘 작동합니다.DataGrid 내의 Combobox는 데이터를 표시하지 않습니다.

DataGridTemplateColumn을 통해 Combobox를 추가 한 추가 열을 추가했습니다. 이 콤보 박스는 도메인 데이터 소스에 바인딩됩니다. 그러나 콤보 박스에는 어떤 데이터도 포함되어 있지 않습니다.

XAML에서 combobox 코드를 가져 와서 별도의 컨트롤로 데이터 그리드 위에 붙여 넣었습니다. 그러면 콤보 상자가 잘 작동하고 데이터가 표시됩니다.

왜 내 콤보 상자는 데이터 격자에 포함되어있을 때 어떤 데이터도 표시하지 않습니까? 내가 DataTemplate을 자체의 DataContext에 살고 있기 때문에 문제가 발생하는 것으로 판단

<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> 

답변

1

하고 DomainDataSource을 포함하여, 부모 요소에 액세스 할 수 없습니다 : 내 XAML 코드는 다음과 같습니다. 내가 겪어 본 상당히 실망한 문제.

SO Question

Creating a Silverlight DataContext Proxy to Simplify Data Binding in Nested Controls

당신은 뒤에 코드를 사용하여 반대하지 않는 경우, 나는로드에 ItemSource을 설정하는 stackoverflow solution을 믿는다

이러한 링크는 올바른 방향으로 날 지점 도움 이벤트가 가장 쉬운 방법입니다.

+0

감사합니다. 그것은 MS에 의해 조금은 감독처럼 보이지만 ... –

관련 문제