Как избежать потери DataContext в XAML?
Включены CompiledBindings, контекст прописан единожды и не меняется. Но стоило добавить в верстку простой UserControl, сразу некоторые элементы теряют DataContext. Это я понял по disabled кнопкам, которые биндились к командам и т.д. XAML контрола:
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:models="clr-namespace:MyProject.Models"
xmlns:views="clr-namespace:MyProject.Views"
mc:Ignorable="d" d:DesignWidth="200" d:DesignHeight="250"
x:DataType="views:CheckboxList"
x:Class="MyProject.Views.CheckboxList">
<ItemsControl Name="childContainer"
ItemsSource="{Binding ItemsSource}"
Padding="4">
<!--Use a StackPanel to display all the modules-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!--This defines the layout for each item (i.e. each module)-->
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type models:CheckedValue}">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked}"
IsThreeState="False"/>
<TextBlock Text="{Binding Text}"
VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</UserControl>
Но я не думаю, что дело в нем. Исправляется добавлением контейнерам DataContext вручную:
<Border DockPanel.Dock="Bottom"
DataContext="{Binding $parent[UserControl].DataContext}"
x:DataType="viewModels:MyViewModel">
что выглядит некрасиво и громоздко, если добавлять в каждую панель. Версия Avalonia 11.0.3, но сталкивался с подобным и на 10 версии.