Доступ к имени при переключении переключателя в формах списка xamarin - PullRequest
0 голосов
/ 10 сентября 2018

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

 <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 из моей ViewModel?

1 Ответ

0 голосов
/ 10 сентября 2018

Самый простой способ - создать свойство 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...