从MVVM WPF中的DataGrid捕获标签文本

时间:2014-02-26 04:54:55

标签: c# wpf mvvm datagrid wpfdatagrid

我使用MVVM在DataGrid中实现了Label。我的要求是当用户点击Label需要引发的事件时才能正常工作。但现在我想捕获标签文本,但我无法实现这一点:

<DataGrid HorizontalAlignment="Stretch" Name="DgPreviousEntries" HeadersVisibility="None"
             ItemsSource="{Binding WeeklyWiseEntries}" AutoGenerateColumns="False" SelectedItem="{Binding SelectedweekEntry}">            
            <DataGrid.Columns>
                <DataGridTemplateColumn IsReadOnly="True" Width="600">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <Grid>
                                    <Label Grid.Column="0" Grid.Row="1">
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger EventName="MouseLeftButtonUp">
                                                <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.WeekCommand}">
                                                </i:InvokeCommandAction>
                                            </i:EventTrigger>                                            
                                        </i:Interaction.Triggers>
                                        <Label.Content>
                                            <TextBlock>
                                            <TextBlock.Text>
                                                <MultiBinding StringFormat="Mon &#x0a; {0}">
                                                    <Binding Path="Monday" Source="Monday" />                                        
                                                 </MultiBinding>
                                            </TextBlock.Text>
                                            </TextBlock>                                            
                                        </Label.Content> 
                                    </Label>
                                </Grid>
                            </StackPanel>
                        <DataTemplate>                  
                    <DataGridTemplateColumn.CellTemplate>   
                <DataGrid.Columns>
        </DataGrid>

1 个答案:

答案 0 :(得分:0)

您是否尝试将标签文本作为命令参数传递?

CommandParameter={Binding Path=Content, ElementName=LabelName}

E:

<Label Grid.Column="0" Grid.Row="1" Name="DayLabel">
<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseLeftButtonUp">
        <i:InvokeCommandAction 
        Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.WeekCommand}"
        CommandParameter={Binding Path=Content, ElementName=DayLabel}>
        </i:InvokeCommandAction>
    </i:EventTrigger>                                            
</i:Interaction.Triggers>
<Label.Content>
    <TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="Mon &#x0a; {0}">
            <Binding Path="Monday" Source="Monday" />                                        
         </MultiBinding>
    </TextBlock.Text>
    </TextBlock>                                            
</Label.Content> 
</Label>