2012-08-22 1 views
0

나는 이와 같이 보이는 xaml 파일을 가지고 있습니다.WPF에서 DataConext를 찾을 수 없습니다.

<Window x:Class="Space4it.Energilab.DataApplicationWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    xmlns:local="clr-namespace:Space4it.Energilab.DataApplicationWPF" 
    Title="Space4it NetBitter database interface" Height="700" Width="1200" 
    x:Name="rootElement" 
    Icon="program.ico"> 


<Window.DataContext> 
<local:MainWindowDataModel/></Window.DataContext> 

MainWindowDataModel 메인 WPF 프로젝트에 있으며 그것은 작동된다 "디버그 - X86". 그러나로 변경하는 경우 "생산 - X64을"나는이 오류를 얻을 :

Error 1 The name "MainWindowDataModel" does not exist in the namespace "clr-namespace:Space4it.Energilab.DataApplicationWPF". C:\Users\tarp\Dropbox\Space4it\Development\Energilab\Development\Space4it.Energilab.Solution\Space4it.Energilab.DataApplicationWPF\MainWindow.xaml 10 5 Space4it.Energilab.DataApplicationWPF

나는 "청소", 다시 컴파일했다가 ....

재미 있은 것은 데이터 그리드 데이터를 가져 오는, 그러나이 콤보 상자 내부에 있다는 것입니다 그리드하지 않습니다! 이것은 다른 컴퓨터에 프로그램을 설치할 때만 문제가됩니다. 나는. Windows Server 2008.

<DataGridComboBoxColumn Header="Key" SelectedValueBinding="{Binding Path=t_keys_id, UpdateSourceTrigger=PropertyChanged}"> 
       <DataGridComboBoxColumn.ElementStyle> 
        <Style TargetType="ComboBox"> 
        <Setter Property="ItemsSource" Value="{Binding ElementName=rootElement, Path=DataContext.keyData}"/> 
        <Setter Property="IsEditable" Value="False"/> 
        <Setter Property="DisplayMemberPath" Value="nb_key" /> 
        <Setter Property="SelectedValuePath" Value="id"/> 
        </Style> 
       </DataGridComboBoxColumn.ElementStyle> 
       <DataGridComboBoxColumn.EditingElementStyle> 
        <Style TargetType="ComboBox"> 
        <Setter Property="ItemsSource" Value="{Binding ElementName=rootElement, Path=DataContext.keyData}"/> 
        <Setter Property="IsEditable" Value="True"/> 
        <Setter Property="DisplayMemberPath" Value="nb_key" /> 
        <Setter Property="SelectedValuePath" Value="id"/> 
        </Style> 
       </DataGridComboBoxColumn.EditingElementStyle> 
       </DataGridComboBoxColumn> 

누구에게 아이디어가 있습니까?

+0

';; assemblyname = Space4it.Energilab.DataApplicat를 추가하십시오. ionWPF "(참조 된 프로젝트의 어셈블리)를 로컬 정의에 추가합니다. –

+0

작동하지 않습니다. Space4it.Energilab.DataApplicationWPF는 .exe 파일입니다. 그게 문제가 될지 모르겠다. 모든 WPF 코드는 동일한 .exe 파일에 있습니다. –

답변

1

짐작 컨대, Space4it.Energilab.DataApplicationWPF 어셈블리가 "AnyCPU"또는 "x64"대신 "x86"플랫폼으로 컴파일되었다고 말할 수 있습니다. 구성을 전환 할 때 해당 어셈블리의 64 비트 버전에 액세스 할 수 없습니다.

이 소스는 다음이없는 당신이 64 비트로 JITted 수 있도록 CorFlags으로 해킹 할 수 있습니다 타사 라이브러리가 있다면 (32 비트 플래그를 취소하여).

원본이있는 경우가있는 구성 관리자를 살펴 64 비트 모드에서 사용할 수 있도록, 당신은 그것을 구축 할 수 있습니다 솔루션, "Production - x64"에서 프로젝트에 사용 된 플랫폼 구성을 확인하십시오

+0

그래, 솔루션에 포함 된 하나 이상의 프로젝트가 사용자가 설명 한대로 구축되지 않는다는 데 동의합니다. – code4life

+0

ansvars에 감사드립니다. 모든 코드가 내 코드이고 모든 코드가 X64로 설정되어 있습니다. MainWindowDataModel.cs는 .exe 파일/같은 프로젝트에 있습니다. 어셈블리 테스트를하고 ILOnly, PEP32lus를 되찾았습니다. 2008 Server에 작동하는 AnyCPU 컴파일 된 버전을 복사해도 데이터가 반입되지 않으며 MainWindowDataModel이 호출되지 않습니다. –

+0

어디서나 [DllImport]를 사용하여 WIN32 API 호출을 호출합니까? 그렇다면 64 비트 선언으로 업데이트해야합니다. 64 비트 코드에서 32 비트 API 항목을 직접 호출 할 수 없기 때문입니다. –

관련 문제