protected override void OnUnloaded() { base.OnUnloaded(); DataContext = null; viewModel = null; if (Instance == this) { Instance = null; } }
protected override void OnLoaded() { base.OnLoaded(); DataContext = viewModel = new ViewModelFishingCalculator(); fishingGridView = FindName("FishingGridView") as GridView; foreach (var baitViewModel in EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemFishingBait>()) { var entityControl = new EntitySlotControl() { DataContext = baitViewModel }; var gridViewColumnHeader = new GridViewColumnHeader() { Content = entityControl }; var commandBinding = new Binding() { Path = new PropertyPath("BaitSortDictionary[" + baitViewModel.Type + "]") }; gridViewColumnHeader.SetBinding(GridViewColumnHeader.CommandProperty, commandBinding); var gridColumn = new GridViewColumn() { Header = gridViewColumnHeader, Width = double.NaN }; Binding ChanceBinding = new Binding() { Path = new PropertyPath("BaitWeightDictionary[" + baitViewModel.Type + "].Chance"), StringFormat = "P0" }; // Yep, it's error in VS2019, but it works for noesis. // https://www.noesisengine.com/bugs/view.php?id=1337 gridColumn.DisplayMemberBinding = (BindingExpression)ChanceBinding.ProvideValue( new ProvideValueTarget { TargetObject = null, TargetProperty = null }); fishingGridView.Columns.Add(gridColumn); } }