проблемы с x:Bind Mode=OneWay

Я использую x:Bind с режимом=OneWay.

<CommandBar
    DefaultLabelPosition="Bottom"
    RelativePanel.RightOf="AutoSuggestBoxSearchItem">
    <AppBarButton
        x:Name="DetailsButton"
        Icon="Contact"
        Label="View details"
        IsEnabled="{x:Bind converters:Converters.IsNotNull(ViewModel.SelectedItem), Mode=OneWay}"/>
    <AppBarButton
        x:Name="DeleteButton"
        Icon="Delete"
        Label="Delete"
        IsEnabled="{x:Bind converters:Converters.IsNotNull(ViewModel.SelectedItem), Mode=OneWay}"/>
    <AppBarSeparator/>
    <AppBarButton
        x:Name="AddButton"
        Icon="Add"
        Label="Add"/>

IsNotNull check's if object is not null.

public class Converters
{
    public static bool  IsNotNull(object value) => value != null;
}

ViewModel.SectedItem показывает выбранный элемент в сетке данных. Поэтому, когда я выбираю элемент в DataGrid, кнопки панели приложений должны устанавливать для свойства isEnabled значение true.

Но: 2 первая кнопка сверху должна быть доступна, но это не так


person N. Yeshikhin    schedule 05.10.2018    source источник
comment
для одностороннего и двустороннего привязки данных вам необходимо реализовать INotifyPropertyChanged , подробнее здесь: docs.microsoft.com/en-us/uwp/api/   -  person Muhammad Touseef    schedule 05.10.2018


Ответы (1)


Создайте свойство и привяжите его к IsEnabled, как показано ниже IsEnabled="{x:Bind propertyName)

В установщике свойств используйте OnPropertyChanged("propertyName")

person Venkat    schedule 05.10.2018