2011-08-12 9 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}"のようなものを使用して、のようにウィンドウまたはUserControlにdを定義できますか?

それはnull

に等しいItemsSourceのデザイン時のプロパティを編集

mcの定義を追加するのを忘れ作る必要があります - それはレイチェルねえ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

+0

で、私は仕事にそれを得ました。私はx:Staticブロック '{Binding Source = {x:Static app:Session.TaxCodes}}'のメンバへのフルパスを指定しなければなりませんでした。私はあなたのアプローチを最初に試みましたが、それを働かせることはできませんでした。私はそういうことをすることができるとは気づいていなかったので、私は学習に興味があります。私が試みたのは、 'd:ItemsSource =" {x:Null} "'と 'ItemsSource =" {my binding ...} "という列に2つのプロパティを追加することでした。 。そして、無視できる部分は、名前空間dを定義しなければならないと言いました。助けてくれてありがとう! –

+1

@Saad Imran申し訳ありませんが、私は 'mc'の名前空間を追加するのを忘れていました。あなたのクラスに 'mc'と' d'名前空間を追加すればうまくいくはずです。私は正直なところ、デザイナーをあまり使わないのですが、 'mc'と' d'を追加することは、Expression Blendがデザインタイムかランタイムかを判断するために使用するので、動作するはずです。私はそれをテストしていない:) – Rachel

+0

ああ、それを得た。どうもありがとう!。新しい何かを今日学んだ:) –

関連する問題