0

私はデータバインディングを使用するデータグリッドを持っています。この Datagrid には、印刷する必要があるドキュメントが表示されます。私は Entity Framework を使用しています。

<Datagrid.Columns>
<DatagridTextColumn Header"Printed On" Binding="{Binding printed_on, Mode=OneWay,  NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True,  UpdateSourceTrigger=PropertyChanged, BindsDirectlyToSource=True,  IsAsync=True}" >

<DatagridTextColumn Header"State" Binding="{Binding state1.description,           Mode=OneWay,                        NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True,UpdateSourceTrigger=PropertyChanged,  BindsDirectlyToSource=True, IsAsync=True}" >
</Datagrid.Columns>

ドキュメントを印刷する場合は、printed_on フィールドを実際の日付に設定し、状態を印刷済み (列挙型の整数) に設定します。Field state1.description は、「印刷予定」を 0、「印刷済み」を 1、「エラー」を 2 に接続します。

これらの 2 つの値を更新すると、印刷された実際の日付を確認できますが、state1.description はデータグリッドで変更されていないようです。「印刷済み」ではなく「オープン」のままです。

そして、私は他の Datagrid を持っています。ここでは、ドキュメントがすでに印刷されている方法と、ドキュメントを印刷する必要がある方法を示しています。Entity Frameworkによって作成されたクラスを拡張し、ドキュメントのカウントをプロパティに返す部分クラスがあります。しかし、ドキュメントの状態を変更しても、それらも更新されません。クラスのプロパティは次のようになります

partial public class headers
public readonly property intStateOpen as integer
get 
    return from ... count
end property

クラス終了

私は何をすべきか?

4

1 に答える 1

0

まず、スタック オーバーフローへようこそ。

ユーザーがすべての関連情報を提供していない場合、このような質問に答えるのは非常に困難です...私たちは読者を気にしません. 一般に、クラスがどのように構成されているか、 を設定する方法、DataGrid.DataContextおよび として使用しているクラスDataContextが異なる場合は、少なくともそれを示す必要があります。

そうは言っても、XAML にエラーが表示されますIDオブジェクトの更新されていると言いますが、Descriptionそうではありません。今、あなたの例であなたが話していることは、あなたが話していることだと推測してnumberいます(しかし、あなたが私たちに言わなかったので、私はそれを知りません)。BindingID

それが正しい場合はBindingDescriptionプロパティに同様のものを使用し、state1オブジェクトへの参照を削除する必要があります。

<DatagridTextColumn Header"State" Binding="{Binding description, Mode=OneWay, 
    NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True, 
    UpdateSourceTrigger=PropertyChanged, BindsDirectlyToSource=True, IsAsync=True}">

ここのヘルプページを読んで、この Web サイトでどのように機能するかを理解することをお勧めします良い質問の仕方もここで見つけることができます。


更新 >>>

OK、WPF を作成する場合は、INotifyPropertyChangedインターフェイスを使用する必要があります。これは、ソース オブジェクトまたはターゲット オブジェクトに対して行われた変更のデータ バインド プロパティを通知するために使用されます。コード ビハインド/ビュー モデルからのデータ、またはそのデータがバインドされている UI コントロール。DataContextビュー モデル (またはビュー (またはUserControl)として設定されているクラス) にこのインターフェイスを実装する必要があります。MSDN のリンクされたページに示されている例に従うことができます。

さらに、WPF では、UI で編集および/または表示するすべてのプロパティを含むビュー モデル クラスを作成することで大きなメリット得られます。このクラスは、ビューの として設定する必要があります。現在、すべてのプロパティに 1 か所でアクセスできないため、問題が発生している可能性があると思います。DataContextUserControl

于 2013-10-16T10:48:59.800 に答える