2014-02-26 69 views
0

我已经在使用MVVM的DataGrid中实现了Label。我的要求是当用户点击Label需要提高的事件工作正常。但现在我想捕获标签的文字,但我无法达致这:从MVVM中的DataGrid捕获标签文本WPF

<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> 

回答

0

你尝试通过标签文本作为命令放慢参数?

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

E.g:

<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> 
+0

嗨,但我怎么捕获我的视图模型的DayLabel(标签)的文本?因为我已经实施了标签的内容。 – Bhuvan

+0

嗨我收到ViewModel中的空值时,我实现了我的RelayCommand作为WeekCommand = new RelayCommand(WeekData,null); – Bhuvan

+0

谢谢你的回答,答案中唯一的变化是{Binding Path = Text,ElementName = DayLabel}应该是{Binding Path = Content,ElementName = DayLabel} – Bhuvan