WPF无法找到DataConext

时间:2012-08-22 16:40:38

标签: wpf

我有一个看起来像这样的xaml文件。

<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项目中,它在“Debug - X86”中工作。 但是当更改为“Production - X64”时,我收到此错误:

  

错误1名称“MainWindowDataModel”在名称空间“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

我做了“干净”,重新编译......

有趣的是,DataGrid获取数据,但这个ComboBox内部网格没有!这是安装其他计算机程序时的一个问题。即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>

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

猜测一下,我会说Space4it.Energilab.DataApplicationWPF程序集是用“x86”平台编译的,而不是“AnyCPU”或“x64”......所以当你切换配置时它可以' t访问该程序集的64位版本。

如果它是第三方库,你没有它的源,那么你可以用CorFlags破解它以允许它被JIT打成64位(通过清除32位标志)。

如果您有源,那么您可以构建它以便可以在64位模式下使用,查看解决方案中的配置管理器,并在“生产 - x64”中检查项目使用的平台配置