Доступ к имени при переключении переключателя в формах listview xamarin

У меня есть приведенные ниже коды, которые состоят из списка. Список содержит метку и настраиваемый переключатель.

 <ListView x:Name="myListView" Margin="20" HasUnevenRows="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell IsEnabled="False">
                            <Grid Margin="0,0,0,10">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <StackLayout VerticalOptions="CenterAndExpand">
                                    <Label Text="{Binding .}"  />
                                </StackLayout>
                                <local:CustomSwitch x:Name="customSwitch"  
                                     SwitchOffColor="Gray"  
                                     SwitchOnColor="Red"  
                                     SwitchThumbColor="White"
                                     HorizontalOptions="CenterAndExpand"  
                                     VerticalOptions="CenterAndExpand"
                                     Grid.Column="1"
                                     />
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Я хочу добиться, чтобы текст метки появлялся при переключении переключателя. Как добиться этого в Xamarin Forms из моей модели ViewModel?

1
0
415
1

Ответы 1

Самый простой способ - создать свойство Bindable в вашем CustomSwitch, например

BindableProperty CommandParameterProperty = BindableProperty.Create("CommandParameter", typeof(object), typeof(object), null);

public object CommandParameter
{
    get { return GetValue(CommandParameterProperty ); }
    set
    {
        SetValue(CommandParameterProperty , value);
    }
}

Затем в вашем xaml адаптируйте свое объявление к

<local:CustomSwitch x:Name="customSwitch"  
       SwitchOffColor="Gray"  
       SwitchOnColor="Red"  
       SwitchThumbColor="White"
       HorizontalOptions="CenterAndExpand"  
       VerticalOptions="CenterAndExpand"
       Grid.Column="1"
       CommandParameter={Binding .}
       />

Теперь в вашем коде вы можете легко получить доступ и использовать CommandParameter и преобразовать его в строку:

string labelName = (string) ((sender as CustomSwitch).CommandParameter);

Как я могу добавить обработчик событий для срабатывания при переключении переключателя? Toggled вроде не работает.

crazydev 10.09.2018 11:59

См. Этот пост: stackoverflow.com/questions/42848585/…

Markus Michel 10.09.2018 12:10

Другие вопросы по теме