0

現在のビューと現在のビューモデルを変更している ViewModelMain を取得しました。

        public ViewModelBase CurrentVm { get; set; }

        public UserControl Content
        {
            get { return _content; }
            set
            {
                _content = value;
                RaisePropertyChanged(() => Content);  // this is the Line where i get the Exception
            }
        }

この問題は、LocBinding のある特定のビューから、LocBinding のない別のビューに移動するときに発生します。

現在のビューには、コンボボックスを持つ locBinding があります

<ComboBox MinWidth="45" MaxWidth="80" Grid.Column="1" ItemsSource="{Binding AmountUnits.View}"  ItemTemplate="{StaticResource NameResourceKeyTextBoxItemTemplate}" />

アイテム テンプレート:

    <DataTemplate x:Key="NameResourceKeyTextBoxItemTemplate" >
        <StackPanel>
            <StackPanel.Resources>
                <lex:LocExtension x:Key="LocalizedHeader" x:Name="LocalizedHeader"/>
            </StackPanel.Resources>
            <Engine:LocBinding Source="{Binding Name, Mode=OneWay}" Target="{x:Reference LocalizedHeader}" />
            <TextBlock Text="{x:Reference LocalizedHeader}" />
        </StackPanel>
    </DataTemplate>

バインディングのプロパティ(私のViewModel内):

        private CollectionViewSource _amountUnits;
        public CollectionViewSource AmountUnits
        {
            get { return _amountUnits; }
            set { _amountUnits = value;
                RaisePropertyChanged(() => AmountUnits);
            }
        }

        AmountUnits.Source =
                    AmountUnit.GetAll().Select(x => new MaterialInputProp(x.Id, x.TransKey)
                        {
                            Name = x.TransKey,
                            IsSelected = x.IsSelected
                        }).ToList();

これはすべて正常に機能します...ただし、ViewModelMain でビューを変更していて、現在のビューの PropertyChanged が Raised である場合、NullReferenceException が発生します.. :/ 新しい ViewModel が空か複雑かは気にしません... UserControl コンテンツを変更すると、例外が発生します.. :/

例えば。ViewModelMain でビューを変更する方法

CurrentVm = new MaterialInputViewModel(mc.NewValue);
Content = new InputView();

コンテンツのセッターで壊れます...

スタックトレース:

at WPFLocalizeExtension.Engine.LocBinding.OnPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
   at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
   at System.Windows.Data.BindingExpression.Activate(Object item)
   at System.Windows.Data.BindingExpression.OnDataContextChanged(DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
...

さらに情報が必要な場合は、お尋ねください...助けが必要です! 緊急です... :/

4

1 に答える 1