2011-08-12 35 views
0

我使用的是EntityFramework和开票应用程序的工作。以下是我的DataGrid的xaml代码。现在,编译和一切都很正常,但问题是,在设计模式,因为静态属性实际上从使用实体框架MySql数据库装入静态结合我对DataGridComboBoxColumn抛出异常。结合静态属性问题

<DataGrid x:Name="ItemsGrid" Grid.Row="2" Grid.ColumnSpan="3" ItemsSource="{Binding Items}" FontSize="11" AutoGenerateColumns="False" CanUserAddRows="False" RowHeaderWidth="0" GridLinesVisibility="None" CanUserResizeRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Width="150" Header="Item No."> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBox Width="130" BorderThickness="0" Background="Transparent" Text="{Binding Number}" /> 
          <Image MouseDown="ItemSelectionButton_Click" Margin="0,0,0,0" Width="12" Source="/Images/Icons/SearchBlack.png" /> 
         </StackPanel> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTextColumn Width="70" Header="Quantity" Binding="{Binding Quantity}" /> 
      <DataGridTextColumn Width="70" Header="Order" Binding="{Binding Order}" /> 
      <DataGridTextColumn Width="70" Header="B/O" Binding="{Binding BackOrder}" /> 
      <DataGridTextColumn Width="60" Header="Units" Binding="{Binding Units}" /> 
      <DataGridTextColumn Width="200" Header="Description" Binding="{Binding Description}" /> 
      <DataGridTextColumn Width="90" Header="Price" Binding="{Binding Price}" /> 
      <DataGridComboBoxColumn Width="50" Header="Tax" ItemsSource="{x:Static app:Session.TaxCodes}" SelectedValueBinding="{Binding TaxCodeID}" DisplayMemberPath="Code" SelectedValuePath="ID" /> 
      <DataGridTextColumn Width="90" Header="Amount" Binding="{Binding Amount}" /> 
      <DataGridTextColumn Width="90" Header="Linked" Binding="{Binding SalesOrderID}" /> 
     </DataGrid.Columns> 
    </DataGrid> 

这里的例外:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid. 
    at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) 
    at System.Data.EntityClient.EntityConnection..ctor(String connectionString) 
    at System.Data.Objects.ObjectContext.CreateEntityConnection(String connectionString) 
    at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName) 
    at DtcInvoicer.Models.DatabaseEntities..ctor() in F:\Development\DTC Industrial\DtcInvoicer\DtcInvoicer\Models\DatabaseModel.Designer.cs:line 42 
    at DtcInvoicer.Models.Repository.get_GetContext() in F:\Development\DTC Industrial\DtcInvoicer\DtcInvoicer\Models\Repository.cs:line 14 
    at DtcInvoicer.Models.TaxCodesRepository.SelectAll() in F:\Development\DTC Industrial\DtcInvoicer\DtcInvoicer\Models\TaxCodesRepository.cs:line 54 
    at DtcInvoicer.Session..cctor() in F:\Development\DTC Industrial\DtcInvoicer\DtcInvoicer\Session.cs:line 18 

我知道试图解决问题的根源将是工作太多了,我不知道是否有类似动态绑定到一个静态属性一个简单的解决方法在另一个班级。任何人有任何想法如何做到这一点?寻找一个xaml唯一的解决方案。

这是我已经尝试过...

ItemsSource="{Binding Path=TaxCodes, Source={x:Static app:Session}}" 

ItemsSource="{Binding Path=TaxCodes, Source={StaticResource app:Session}}" 

ItemsSource="{Binding app:Session.TaxCodes}" 

任何帮助表示赞赏。

谢谢。

回答

2

您可以使用类似d:ItemsSource="{x:Null}"的东西,并在您的Window或UserControl中定义d,如mc:Ignorable="d"

应该做的ItemsSource等于设计时属性null

编辑

忘了补充定义为mc - 这是 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

+0

嘿瑞秋,我得到它的工作。我只需要在我的x:Static block {{Binding Source = {x:Static app:Session.TaxCodes}}'中指定成员的完整路径。我首先尝试了你的方法,但不能让它工作,我不知道我可以做那样的事情,所以我对学习很感兴趣。我所尝试的是在列上添加两个属性,'d:ItemsSource =“{x:Null}”'和ItemsSource =“{my binding ...}”但它说我正在定义属性不止一次。可以忽略的部分说我必须定义名称空间d,那是什么名字空间?谢谢您的帮助! –

+1

@Saad Imran对不起,我忘了为'mc'添加命名空间。将'mc'和'd'命名空间添加到你的类中,它应该可以工作。我真的不用那么多设计器,但是添加'mc'和'd'是Expression Blend用来确定它是在Design Time还是Run Time,所以我认为它应该可以工作。我还没有测试它:) – Rachel

+0

啊,明白了。非常感谢!。今天学到了新东西:) –