簡體   English   中英

綁定到 static 屬性問題

[英]binding to static property problem

我正在使用EntityFramework並處理發票應用程序。 下面是我的DataGrid中的 xaml 代碼。 現在它可以編譯並且一切正常,但問題是,我在DataGridComboBoxColumn上的 static 綁定在設計器模式下會引發異常,因為 static 屬性實際上是使用實體框架從MySql數據庫加載的。

    <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

我知道嘗試解決問題的根源將是太多工作,我想知道是否有一個簡單的解決方法,例如動態綁定到另一個 class 中的 static 屬性。 任何人都知道如何做到這一點? 尋找xaml唯一的解決方案。

這是我已經嘗試過的...

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

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

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

任何幫助表示贊賞。

謝謝。

您可以使用d:ItemsSource="{x:Null}"類的東西,並在您的 Window 或 UserControl 中定義d ,例如mc:Ignorable="d"嗎?

它應該使ItemsSource的設計時屬性等於null

編輯

忘記添加mc的定義 - 它是xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM