Свойство ToggleSplitButton IsChecked не работает ... возможная ошибка? - PullRequest
0 голосов
/ 18 апреля 2020

Я впервые использую 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. Возможно, этот элемент управления все еще находится в разработке ...

С уважением

1 Ответ

0 голосов
/ 19 апреля 2020

Насколько я знаю, такие отсталые несовместимости созданы в uwp. В устаревшей модели Windows (XP, 7,8 и c.) Microsoft несла ответственность за обеспечение совместимости Windows с предыдущей версией. М.С. пришлось потратить много времени и денег, чтобы добиться этого. Но теперь в WaaS модели Microsoft будет продолжать обновлять Windows довольно часто и случайно, как вы знаете. Для них практически невозможно поддерживать совместимость своих продуктов с постоянными основными обновлениями. Поэтому вместо MS все разработчики приложений uwp несут ответственность за совместимость своих приложений с последней версией Windows10.

Теперь вы занимаетесь разработкой uwp. Если вы надеетесь, что ваше приложение может работать с текущей версией Windows10, просто используйте DependencyProperty, как говорится. Или же, если вы хотите, чтобы они исправили такую ​​«функцию» в будущем выпуске, отправьте им отзывы.

Кстати, для вас также может быть полезно протестировать ваши приложения на Инсайдерских версиях предварительного просмотра OS / SDK , чтобы проверить, будут ли ваши приложения / коды работать в следующей версии Windows Если вы хотите избежать подобных неприятностей.

...