AvaloniaUI / Avalonia

Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology
https://avaloniaui.net
MIT License
25.63k stars 2.22k forks source link

DropDown Page in ControlCatalog broken. #1303

Closed grokys closed 6 years ago

grokys commented 6 years ago

1209 seems to have broken something. Opening the DropDown page in the ControlCatalog now throws:

System.ArgumentNullException occurred
  HResult=0x80004003
  Message=Value cannot be null.
  Source=<Cannot evaluate the exception source>
  StackTrace:
   at Avalonia.Contract.Requires[TException](Boolean condition) in D:\projects\Avalonia\src\Avalonia.Base\Contract.cs:line 33
   at Avalonia.Markup.Data.ExpressionObserver..ctor(Func`1 rootGetter, String expression, IObservable`1 update, Boolean enableDataValidation, String description) in D:\projects\Avalonia\src\Markup\Avalonia.Markup\Data\ExpressionObserver.cs:line 132
   at Avalonia.Markup.Xaml.Data.Binding.CreateTemplatedParentObserver(IAvaloniaObject target, String path) in D:\projects\Avalonia\src\Markup\Avalonia.Markup.Xaml\Data\Binding.cs:line 255
   at Avalonia.Markup.Xaml.Data.Binding.Initiate(IAvaloniaObject target, AvaloniaProperty targetProperty, Object anchor, Boolean enableDataValidation) in D:\projects\Avalonia\src\Markup\Avalonia.Markup.Xaml\Data\Binding.cs:line 128
   at Avalonia.AvaloniaObjectExtensions.Bind(IAvaloniaObject target, AvaloniaProperty property, IBinding binding, Object anchor) in D:\projects\Avalonia\src\Avalonia.Base\AvaloniaObjectExtensions.cs:line 227
   at Avalonia.Markup.Xaml.Data.DelayedBinding.BindingEntry.Apply(IControl control) in D:\projects\Avalonia\src\Markup\Avalonia.Markup.Xaml\Data\DelayedBinding.cs:line 136
   at Avalonia.Markup.Xaml.Data.DelayedBinding.ApplyBindings(IControl control) in D:\projects\Avalonia\src\Markup\Avalonia.Markup.Xaml\Data\DelayedBinding.cs:line 104
   at Avalonia.Markup.Xaml.Data.DelayedBinding.ApplyBindings(Object sender, EventArgs e) in D:\projects\Avalonia\src\Markup\Avalonia.Markup.Xaml\Data\DelayedBinding.cs:line 114
   at Avalonia.Controls.Control.InitializeIfNeeded() in D:\projects\Avalonia\src\Avalonia.Controls\Control.cs:line 470
   at Avalonia.Controls.Control.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Controls\Control.cs:line 676
   at Avalonia.Visual.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Visuals\Visual.cs:line 339
   at Avalonia.Input.InputElement.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Input\InputElement.cs:line 392
   at Avalonia.Controls.Control.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Controls\Control.cs:line 674
   at Avalonia.Visual.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Visuals\Visual.cs:line 339
   at Avalonia.Input.InputElement.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Input\InputElement.cs:line 392
   at Avalonia.Controls.Control.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs e) in D:\projects\Avalonia\src\Avalonia.Controls\Control.cs:line 674
   at Avalonia.Visual.SetVisualParent(Visual value) in D:\projects\Avalonia\src\Avalonia.Visuals\Visual.cs:line 511
   at Avalonia.Visual.VisualChildrenChanged(Object sender, NotifyCollectionChangedEventArgs e) in D:\projects\Avalonia\src\Avalonia.Visuals\Visual.cs:line 529
   at Avalonia.Collections.AvaloniaList`1.NotifyAdd(IList t, Int32 index) in D:\projects\Avalonia\src\Avalonia.Base\Collections\AvaloniaList.cs:line 502
   at Avalonia.Collections.AvaloniaList`1.Add(T item) in D:\projects\Avalonia\src\Avalonia.Base\Collections\AvaloniaList.cs:line 191
   at Avalonia.Controls.Primitives.TemplatedControl.ApplyTemplate() in D:\projects\Avalonia\src\Avalonia.Controls\Primitives\TemplatedControl.cs:line 265
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 474
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Controls.StackPanel.MeasureOverride(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Controls\StackPanel.cs:line 158
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 479
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Controls.StackPanel.MeasureOverride(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Controls\StackPanel.cs:line 158
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 479
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Controls.Presenters.ContentPresenter.MeasureOverride(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Controls\Presenters\ContentPresenter.cs:line 355
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 479
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 527
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 479
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Layout.Layoutable.MeasureOverride(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 527
   at Avalonia.Layout.Layoutable.MeasureCore(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 479
   at Avalonia.Layout.Layoutable.Measure(Size availableSize) in D:\projects\Avalonia\src\Avalonia.Layout\Layoutable.cs:line 318
   at Avalonia.Layout.LayoutManager.Measure(ILayoutable control) in D:\projects\Avalonia\src\Avalonia.Layout\LayoutManager.cs:line 175
   at Avalonia.Layout.LayoutManager.ExecuteMeasurePass() in D:\projects\Avalonia\src\Avalonia.Layout\LayoutManager.cs:line 135
   at Avalonia.Layout.LayoutManager.ExecuteLayoutPass() in D:\projects\Avalonia\src\Avalonia.Layout\LayoutManager.cs:line 93
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in D:\projects\Avalonia\src\Avalonia.Base\Threading\JobRunner.cs:line 59
   at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in D:\projects\Avalonia\src\Windows\Avalonia.Win32\Win32Platform.cs:line 159
   at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
   at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken) in D:\projects\Avalonia\src\Windows\Avalonia.Win32\Win32Platform.cs:line 113
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in D:\projects\Avalonia\src\Avalonia.Base\Threading\Dispatcher.cs:line 64
   at Avalonia.Application.Run(ICloseable closable) in D:\projects\Avalonia\src\Avalonia.Controls\Application.cs:line 176
   at Avalonia.Controls.AppBuilderBase`1.Start[TMainWindow](Func`1 dataContextProvider) in D:\projects\Avalonia\src\Avalonia.Controls\AppBuilderBase.cs:line 127
   at ControlCatalog.Program.Main(String[] args) in D:\projects\Avalonia\samples\ControlCatalog.Desktop\Program.cs:line 17

cc: @jkoritzinsky

grokys commented 6 years ago

Doesn't handle this line: https://github.com/AvaloniaUI/Avalonia/blob/782650639c4af9b2b94bf9dd24bd88c610ea7a1a/src/Avalonia.Themes.Default/DropDown.xaml#L36

Path is getting passed as null instead of string.Empty.