Я пытаюсь использовать шаблон MVVM, и мне интересно, где я размещаю значение идентификатора. Создать ли TextBlock, у которого свойство видимости установлено как свернутое? Или есть лучшее место для хранения таких данных? В настоящее время параметр команды установлен на:
CommandParameter="{Binding ElementName=Name,Path=Text}"
Но я бы предпочел, чтобы это было что-то вроде:
CommandParameter="{Binding ElementName=Id,Path=Text}"
Я полностью готов к предложениям о том, как лучше всего это сделать, так как я новичок в этом шаблоне и языке презентации.
<ListBox x:Name="MyListBox" ItemsSource="{Binding MyData, Mode=TwoWay}" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox x:Name="Visible" IsChecked="{Binding Visible, Mode=TwoWay}" Command="{Binding ElementName=MyListBox, Path=DataContext.MyCommand}" CommandParameter="{Binding ElementName=Name,Path=Text}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
РЕДАКТИРОВАТЬ: вариант 1
<CheckBox x:Name="Visible" IsChecked="{Binding Visible, Mode=TwoWay}" Command="{Binding ElementName=MyListBox, Path=DataContext.MyCommand}" CommandParameter="{Binding Id}" />
Эта опция дает мне только Id, который полезен во многих ситуациях.
РЕДАКТИРОВАТЬ: Вариант 2
<CheckBox x:Name="Visible" IsChecked="{Binding Visible, Mode=TwoWay}" Command="{Binding ElementName=MyListBox, Path=DataContext.MyCommand}" CommandParameter="{Binding}" />
Эта опция дает мне полную модель, которая еще более полезна для моей конкретной ситуации.