如何将所选行的datagrid单元格的值传递到Silverlight中ChildWindow中的texblock?

| 我从列表中生成了datagrid内容。我需要能够将数据网格中所选行的“名称”单元格的值传递给子窗口的texblock。通过单击上下文菜单项启动子窗口。场景是用户右键单击选定的行“名称”单元格,然后选择启动子窗口的上下文菜单项。使用数据网格中该单元格中的textblock文本值启动ChildWindow。任何想法都受到高度赞赏!先感谢您! 带有上下文菜单的Datagrid:
<sdk:DataGrid x:Name=\"dgPack\" ItemsSource=\"{Binding Source={StaticResource PackagesCollectionViewSource}}\">
<InputToolkit:ContextMenuService.ContextMenu>
        <InputToolkit:ContextMenu x:Name=\"cmPackages_DataGrid\" DataContext=\"{Binding Source={StaticResource GlobalLabelsDataSource}}\">
        <InputToolkit:MenuItem x:Name=\"item1\" Header=\"item1\"/>
        <InputToolkit:MenuItem x:Name=\"GetChildWindow\" Header=\"GetChildWindow\" Click=\"GetChildWindow_Click\"/>
        </InputToolkit:ContextMenu>
    </InputToolkit:ContextMenuService.ContextMenu>
<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn x:Name=\"DataGrid_Name\"  Binding=\"{Binding Name}\" Header=\"Name\" />
    <sdk:DataGridTextColumn x:Name=\"DataGrid_Version\" Binding=\"{Binding Version}\" Header=\"Version\"  />
    <sdk:DataGridTextColumn x:Name=\"DataGrid_Size\"  Binding=\"{Binding Size}\" Header=\"Size\" />
</sdk:DataGrid.Columns> 
后面代码中的方法来启动子窗口:
private void GetChildWindow_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        var selectedItem = PackVM.SelectedPack;

        if (selectedItem != null)
        {
            var bpw = new GetChildWindow1_ChildWindow(selectedItem.Id);
            bpw.Show();
        }
    }
清单:
public List<Pack> GetCollection()
    {
        return new List<Pack>() 
        { 
            new Pack() { Name=\"item1\", Size=10, Version=\"1\"},
            new Pack() { Name=\"item2\", Size=12, Version=\"5\", },
        };
    }
最后是子窗口:
<Grid x:Name=\"LayoutRoot\">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height=\"Auto\" />
    </Grid.RowDefinitions
    <Button x:Name=\"OKButton\" Content=\"OK\" Click=\"OKButton_Click\" Width=\"75\" Height=\"23\" Margin=\"0,0,79,0\" HorizontalAlignment=\"Right\" Grid.Row=\"1\" />
    <Button x:Name=\"CancelButton\" Content=\"Cancel\" Click=\"CancelButton_Click\" Width=\"75\" Height=\"23\" HorizontalAlignment=\"Right\" Grid.Row=\"1\" />
    <TextBlock x:Name=\"Message\" HorizontalAlignment=\"Left\" TextWrapping=\"Wrap\" Text=\"\" VerticalAlignment=\"Top\"/>
</Grid>
    
已邀请:
我不知道我是否正确理解了您的问题,但是我认为您可以通过以下方式解决它: -在子窗口代码中声明一个公共方法,例如\“ SetText(string text)\” -在此方法中,只需设置Message.Text = text
public void SetText(string text)
{
    this.Message.Text = text;
}
-现在,在从父窗口调用show方法之前,先调用此方法:
bpw.SetText(selectedItem.PropertyWithTheText);
这应该工作。 无论如何,您应该看看MVVM来解决这类问题;-)     

要回复问题请先登录注册