Есть текстовый блок status и коллекция элементов, в каждом checkbox, button с , toggleswith (всё это в gridview через datatemplate, с привязкой к ObservableCollection во вью модели). Надо узнать в каком элементе был нажат чекбокс, кнопка и переключатель. Обычно советуют использовать command и commandparameter, но как я ни пробовал так ничего и не получается. Плюс в кнопке и чекбоксе есть command, а в toggleswith вроде нет.
Для упрощения задачи - при нажатии на кнопку (именно на кнопку, а не на сам элемент гридвью) мне надо передать состояние чекбокса и текстовый блок кнопки в поле status.
viewmodel:
public class VMvalues
{
public string vmName { get; set; }
public bool? vmCheck { get; set; }
public bool vmToggle { get; set; }
public command_1 Command_1 { get; set; }
public VMvalues()
{
this.Command_1 = new command_1(this);
}
}
public class VM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<VMvalues> vmCollection { get; set; } = new ObservableCollection<VMvalues>();
public void vmLoad()
{
string[] name = new string[3] { "Kora", "Ora", "Gamora" };
bool?[] check = new bool?[3] { false, false, false };
bool[] toggle = new bool[3] { true, false, true };
for (int i = 0; i < 3; i++)
{
vmCollection.Add(new VMvalues()
{
vmName = name[i],
vmCheck = check[i],
vmToggle = toggle[i]
});
}
}
}
MainPage.xaml.cs
VM vm = new VM();
string txtblkVmStatus = "Status";
public MainPage()
{
this.InitializeComponent();
vm.vmLoad();
}
MainPage.xaml
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBlock Text="{x:Bind txtblkVmStatus}"/>
<GridView x:Name="grdvwBaseOCName" ItemsSource="{x:Bind vm.vmCollection}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="local:VMvalues">
<StackPanel Orientation="Horizontal" >
<ToggleSwitch IsOn="{x:Bind vmToggle}"
OnContent="Вкл"
OffContent="Выкл"/>
<CheckBox IsChecked="{x:Bind vmCheck}"
IsThreeState="False"/>
<Button x:Name="btnName"
Command="{x:Bind Command_1}"
CommandParameter="?">
<TextBlock Text="{x:Bind vmName}"/>
</Button>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</StackPanel>
</Grid>
command_1.cs - сама команда, но что писать в execute не понимаю
public class command_1 : ICommand
{
public VMvalues vmCommand { get; set; }
public command_1(VMvalues vMvalues)
{
this.vmCommand = vMvalues;
}
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
?
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
На данный вопрос уже ответили:
Изменил модельТочнее удалил дополнительные свойства доступа к модели так как посчитал это ненужным кодом и оставил саму модель где и проверяю...
Есть ли такая возможность, чтобы при наведении на объект(класс, структуру) курсором появлялся список его свойств и методов?