Как изменить привязку данных TextBlock с помощью Click в ItemsControl MVVM? - PullRequest
0 голосов
/ 24 июня 2019

Как я могу нажать 1 ItemsControl, затем изменить текст значения, но он не работает

это мой код xaml в представлении:

<ItemsControl ItemsSource="{Binding FCsource}">
    <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <Border Margin="10" Width="440" Height="220" >
                                            <i:Interaction.Triggers>
                                                <i:EventTrigger EventName="MouseLeftButtonDown">
                                                    <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=Window, Mode=FindAncestor}, Path=DataContext.MouseLeftButtonDown }" >
                                                    </i:InvokeCommandAction>
                                                </i:EventTrigger>
                                            </i:Interaction.Triggers>
                                            <Grid>
                                                <TextBlock Text="{Binding Words}"></TextBlock>
                                            </Grid>
                                        </Border>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
    </ItemsControl>

это мой код xaml во ViewModel:

public ObservableCollection _FCsource;

public ObservableCollection<Model.MenuItem> FCsource { get { return AddFlashCard(); } set { FCsource = value; OnPropertyChanged(); } }

private String _Words;
public string Words { get => _Words; set { _Words = value; OnPropertyChanged(); } }

public RelayCommand MouseLeftButtonDown { get; set; }

public WordsViewModel()
{
    MouseLeftButtonDown = new RelayCommand(() => MessageBox.Show("Message", "Hi"));
}

private ObservableCollection<MenuItem> AddFlashCard()
{
    ObservableCollection<MenuItem> listmn = new ObservableCollection<MenuItem>();
    listmn.Add(new MenuItem("qwda"));
    listmn.Add(new MenuItem("qwda"));
    return listmn;
}

1 Ответ

0 голосов
/ 24 июня 2019

Как насчет написания простой кнопки в вашем DataTemplate, а затем внутри нее поместите ваш TextBlock:

<Button Command="YourRelayCommand">
    <TextBlock Text="{Binding Words}" />
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...