Board.xaml
<ListView ItemsSource="{Binding SwitchesList}" HasUnevenRows="True" SeparatorColor="White">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal" Padding="5" BackgroundColor="Transparent">
<Image Source="{Binding ImageURL}"></Image>
<StackLayout HorizontalOptions="StartAndExpand" VerticalOptions="Center">
<Label Text="{Binding Name}" FontSize="22" TextColor="White" VerticalOptions="Center"></Label>
</StackLayout>
<Switch x:Name="{Binding Name}" IsToggled="{Binding State, Mode=TwoWay}" Toggled="Switch_Toggled"></Switch>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Board.xaml.cs
public Board ()
{
InitializeComponent ();
var switchModel = new SwitchModel();
BindingContext = switchModel;
}
SwitchModel as ViewModel
public class SwitchModel : INotifyPropertyChanged
{
public List<SwitchDTO> SwitchesList { get; set; }
public SwitchModel()
{
SwitchesList =new List<SwitchDTO>
{
new SwitchDTO { Name = "FanSwitch", ImageURL = "windmill.png" ,State=true},
new SwitchDTO { Name = "LightSwitch", ImageURL = "plug.png" ,State=false},
new SwitchDTO { Name = "Switch3", ImageURL = "light.png" ,State=true}
};
}
string _Name;
public string Name
{
get
{
return _Name;
} set
{
_Name = value;
}
}
//bool _isOwned;
//public event PropertyChangedEventHandler PropertyChanged;
//public bool IsOwned
//{
// get
// {
// return _isOwned;
// }
// set
// {
// _isOwned = value;
// var c = Name;
// // Do any other stuff you want here
// }
//}
}
Я создал переключатели динамически в представлении списка с помощью модели представления. Проблема заключается в том, как инициировать событие переключателя в модели представления и узнать, какой переключатель переключается со значением On или Off.
Если я использую код позади переключателя, событие щелкается каждый раз, когда строка связывается в представлении списка моделей
Как я могу узнать, что переключатель вентилятора или света переключен на мой взгляд Модель, я посмотрел много примеров как https://forums.xamarin.com/discussion/126130/how-to-get-the-id-of-the-toggled-switch-item-in-the-listview, но ни один из них не дает достаточно информации, как это сделать без написания кода в коде позади, пример