Я впервые использую ToggleSplitButton и обнаружил возможную ошибку: похоже, этот элемент управления не может принять нормальное свойство для двусторонней привязки со свойством IsChecked.
Я нашел это странное поведение как в windows.ui.xaml.controls.ToggleSplitButton
(собственный элемент управления, предоставляемый самой Visual Studio), так и в microsoft.ui.xaml.controls.ToggleSplitButton
(тот же элемент управления, но из пакета nuget WinUI).
Это код, используемый как в галерее элементов управления XAML ...
<ToggleSplitButton VerticalAlignment="Top" IsChecked="{x:Bind ThemeViewModel.IsLeftPaneTransparent, Mode=TwoWay}">
<StackPanel Orientation="Horizontal">
<Grid/>
</StackPanel>
<ToggleSplitButton.Flyout>
<Flyout Placement="Bottom">
<Grid/>
</Flyout>
</ToggleSplitButton.Flyout>
</ToggleSplitButton>
... это мое свойство в моем файле ThemeViewModel cs ...
private bool isLeftPaneTransparent;
public Boolean IsLeftPaneTransparent
{
get { return isLeftPaneTransparent; }
set { SetProperty(ref isLeftPaneTransparent, value); OnPropertyChanged(nameof(IsNOTLeftPaneTransparent)); }
}
... и это я получаю сообщение об ошибке:
Цель привязки TwoWay 'IsChecked' должна быть свойством зависимости
Поддерживает ли native ToggleSplitButton привязку twoway для своего основного свойства (IsChecked)?
А тот из пакета WinUI также не поддерживает двухстороннее связывание? Есть ли способ избежать использования метода IsCheckedChanged? Я также попытался установить версию минимум для моего приложения на 1903 (до того, как она была установлена на 1809), но ошибка по-прежнему продолжает мешать запуску отладки.
Этот новый элемент управления XAML было очень полезно для моего сценария, но кажется, что Microsoft всегда забывает что-то делать.
Я подозреваю, что это ошибка Microsoft, потому что я помню, что даже новый элемент управления TreeView, в Win 10 1709, не мог поддерживать данные привязка, добавлена в Win 10 1803. Возможно, этот элемент управления все еще находится в разработке ...
С уважением