0

私の Silverlight アプリケーションには TabControl があり、タブ コントロールには次の項目があります。

<controls:TabItem Header="{Binding Localization.Shift1}" Style="{StaticResource     PanelBarTabItemStyle}" IsTabStop="False">
    <local:DienstDetailItemControl DataContext="{Binding Shift1, Mode=TwoWay, Converter=    {StaticResource DebugConverter}}"/>
</controls:TabItem>

私のアプリケーションが起動すると、Shift1 プロパティはまだ null です (ユーザーがオプションを選択すると、値が入力されます)。

アプリケーションを起動すると、次のエラーが表示されます。

System.Windows.Data Error: ConvertBack cannot convert value 'null' (type 'null'). BindingExpression: Path='Shift1' DataItem='SDB.Zorgplanner.Client.ViewModels.ViewModels.DienstDetailViewModel' (HashCode=13572818); target element is 'SDB.Zorgplanner.Client.Assets.Controls.DienstDetailItemControl' (Name=''); target property is 'DataContext' (type 'System.Object').. System.MethodAccessException: Attempt by method 'System.Windows.CLRPropertyListener.set_Value(System.Object)' to access method 'SDB.Zorgplanner.Client.ViewModels.ViewModels.DienstDetailViewModel.set_Shift1(SDB.Zorgplanner.UIModel.Dienst)' failed.
   bij System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags)
   bij System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, IRuntimeMethodInfo method, RuntimeType parent, UInt32 invocationFlags)
   bij System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   bij System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   bij System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   bij System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   bij System.Windows.CLRPropertyListener.set_Value(Object value)
   bij System.Windows.PropertyAccessPathStep.set_Value(Object value)
   bij System.Windows.Data.BindingExpression.UpdateValue().

これを修正する方法のアイデアはありますか?

タブアイテムのデータコンテキストをビューモデルからプログラムで設定する方法はありますか?

4

2 に答える 2

1

問題は、Shift1 プロパティのプライベート セッターであることが判明しました...プライベート属性を削除したところ、すべて正常に動作しました:)

于 2013-02-26T10:05:26.497 に答える
0

エラーを見ると、ConvertBack メソッドによってスローされていることがわかります。これは、DataContext バインディングでは珍しいことであり、DataContext に TwoWay モード バインディングがあることに気付きました。TwoWay バインディングが明示的に必要な場合を除き、OneWay に切り替えることをお勧めします (または、同じことを行う XAML の mode 属性を省略します)。

于 2013-02-22T12:10:37.347 に答える