依存オブジェクトへのプロパティ変更するとき:バインディングエラー私は私のコントロールでクラスのシステムを使用するために以下のコードを使用しています
public class FlowProWorkingClass:DependencyObject
{
public TUnitSystemClass ProjectUnitSystem
{
get
{
return Classes.CurrentFlowProWorkingClass.GeneralOptions.listOfUnitSystems.Find(x => x.Id == Classes.CurrentFlowProWorkingClass.GeneralOptions.DefaultUnitSystemId);
}
set
{
throw new Exception("Project Unit System can not be setted here!");}
}
}
を、私は以下のように私のコントロールにバインドします:
<WPFTextBoxUnitConverterControl:TextBoxUnitConvertor
x:Name="txtGasPhaseFlowCoefficient" UnitSystem="{Binding currentFlowProWorkingClass.ProjectUnitSystem, Mode=OneWay, Source={StaticResource CurrentFlowProWorkingClass}, UpdateSourceTrigger=PropertyChanged}"
Height="27" Margin="167,245,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="171"/>
このコードは現在動作しており、現在のシステムのシステムを取得しています。それが開いたときに、私は変化を通知するために、次のコードを追加するために最初のクラスを改訂するよう は現在、制御が必要となります。
public class FlowProWorkingClass:DependencyObject
{
[JsonIgnore]
public static readonly DependencyProperty ProjectUnitSystemProperty =
DependencyProperty.Register(
"ProjectUnitSystem",
typeof(TUnitSystemClass),
typeof(FlowProWorkingClass),
new PropertyMetadata(ProjectUnitSystemOnChanged));
private static void ProjectUnitSystemOnChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
public TUnitSystemClass ProjectUnitSystem
{
get
{
SetValue(ProjectUnitSystemProperty, Classes.CurrentFlowProWorkingClass.GeneralOptions.listOfUnitSystems.Find(x => x.Id == Classes.CurrentFlowProWorkingClass.GeneralOptions.DefaultUnitSystemId));
return (TUnitSystemClass) GetValue(ProjectUnitSystemProperty);
}
set
{
throw new Exception("Project Unit System can not be setted here!");
}
}
}
が、今、コントロールが全くバインドされていません! 問題は何ですか? 注:私は下のコードを書いたとき、バインディングは完全に無視されます! getメソッドはまったく呼び出されません!どうして?
public static DependencyProperty ProjectUnitSystemProperty =
DependencyProperty.Register(
"ProjectUnitSystem",
typeof(TUnitSystemClass),
typeof(FlowProWorkingClass),
new PropertyMetadata(ProjectUnitSystemOnChanged));
private static void ProjectUnitSystemOnChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
public TUnitSystemClass ProjectUnitSystem
{
get
{
SetValue(ProjectUnitSystemProperty, Classes.CurrentFlowProWorkingClass.GeneralOptions.listOfUnitSystems.Find(x => x.Id == Classes.CurrentFlowProWorkingClass.GeneralOptions.DefaultUnitSystemId));
return (TUnitSystemClass) GetValue(ProjectUnitSystemProperty);
}
set
{
throw new Exception("Project Unit System can not be setted here!");
}
}
私はそれを改訂しましたが、正しく表示されていません!私はそれを行うことはできませんいくつかの1つを編集するPLZ! – all
プロパティーセッターからの例外の投げ捨てはまったく意味がありません。プロパティを読み取り専用にします。 – Clemens
@clemens - プロパティはgetで取得される別のプロパティで別の方法から設定する必要があります。 "Classes.CurrentFlowProWorkingClass.GeneralOptions.listOfUnitSystems" – all