Silverlight 在datagrid中动态折叠文本框

Silverlight 在datagrid中动态折叠文本框,silverlight,Silverlight,我曾尝试在文本框和组合框之间动态更改可见/折叠(如下所示),但在“silverlight业务应用程序”中使用此解决方案时,文本框(在DataGridTemplateColumn Header=“Destination”中)在进入编辑模式时拒绝显示,似乎出现了问题 我已经把范围缩小到当MainPage.xaml中存在某些控件(如hyperlinkbutton或contentcontrol)时会出现问题,如果我删除这些控件,它就可以正常工作 有人吗 MainPage.xaml <Gr

我曾尝试在文本框和组合框之间动态更改可见/折叠(如下所示),但在“silverlight业务应用程序”中使用此解决方案时,文本框(在DataGridTemplateColumn Header=“Destination”中)在进入编辑模式时拒绝显示,似乎出现了问题

我已经把范围缩小到当MainPage.xaml中存在某些控件(如hyperlinkbutton或contentcontrol)时会出现问题,如果我删除这些控件,它就可以正常工作

有人吗

MainPage.xaml

    <Grid x:Name="LayoutRoot">
        <Border x:Name="ContentBorder" >
        <navigation:Frame x:Name="ContentFrame" Source="/Home" >
           <navigation:Frame.UriMapper>
            <uriMapper:UriMapper>
                        <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                        <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
                    </uriMapper:UriMapper>
                </navigation:Frame.UriMapper>
            </navigation:Frame>
        </Border>

        <Grid >
      <Grid x:Name="NavigationGrid">

        <Border x:Name="BrandingBorder"> 
            <StackPanel x:Name="BrandingStackPanel" >

            <ContentControl />
            <TextBlock x:Name="ApplicationNameTextBlock" Text="ApplicationName"/>

          </StackPanel>
        </Border>

        <Border x:Name="LinksBorder">
          <StackPanel x:Name="LinksStackPanel">

            <HyperlinkButton x:Name="Link1" NavigateUri="/Home" TargetName="ContentFrame" Content="Navigate Home"/>

            <Rectangle x:Name="Divider1" />

            <HyperlinkButton x:Name="Link2" NavigateUri="/About" TargetName="ContentFrame" Content="Navigate About"/>

          </StackPanel>
        </Border>

      </Grid>


    </Grid>

  </Grid>

当我删除MainPage.xaml中的HyperlinkButtons“Link1”、“Link2”和ContentControl时,它似乎起了作用。

示例代码或xaml会有所帮助……或者请提供“问题”的描述。代码或多或少类似于我发布的链接,但在“silverlight业务应用程序”中“。问题是可见/折叠状态没有下降,组合框更改状态,但文本框保持折叠状态。
    <Grid x:Name="LayoutRoot">
        <StackPanel x:Name="ContentStackPanel">
        <TextBlock x:Name="HeaderText" 
                           Text="Header text"/>
                <sdk:DataGrid x:Name="dataGrid1" AutoGenerateColumns="False" 
                      PreparingCellForEdit="dataGrid1_PreparingCellForEdit">
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTemplateColumn Header="Instruction Type">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock  Margin="2" Text="{Binding operationType}" />
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                            <sdk:DataGridTemplateColumn.CellEditingTemplate>
                                <DataTemplate>
                                    <ComboBox x:Name="instruction" SelectedValue="{Binding operationType, Mode=TwoWay}">
                                        <s:String>TextBox</s:String>
                                        <s:String>ComboBox</s:String>
                                        <s:String>ListBox</s:String>
                                    </ComboBox>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellEditingTemplate>
                        </sdk:DataGridTemplateColumn>
                        <sdk:DataGridTemplateColumn Header="Destination">
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Margin="2" Text="{Binding destination}" />
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                            <sdk:DataGridTemplateColumn.CellEditingTemplate>
                                <DataTemplate>
                                    <StackPanel>

                                        <ListBox x:Name="listBox" SelectedValue="{Binding destination, Mode=TwoWay}">
                                            <s:String>azerty</s:String>
                                            <s:String>qsdfgh</s:String>
                                        </ListBox>

                                        <TextBox x:Name="textBox" Text="{Binding destination, Mode=TwoWay}" />

                                        <ComboBox x:Name="comboBox" SelectedValue="{Binding destination, Mode=TwoWay}">
                                            <s:String>azerty</s:String>
                                            <s:String>qsdfgh</s:String>
                                        </ComboBox>

                                    </StackPanel>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellEditingTemplate>
                        </sdk:DataGridTemplateColumn>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>

            </StackPanel>


  </Grid>
public Home()
{
    InitializeComponent();

    Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    dataGrid1.ItemsSource = new List<Instruction>()
    {
        new Instruction(){operationType = "TextBox", destination ="azerty"},
        new Instruction(){operationType = "ComboBox", destination = "qsdfgh"},
          new Instruction(){operationType = "ComboBox", destination = "wxcvwxcv"}
     };
}

private void dataGrid1_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
    if ((string)e.Column.Header == "Destination")
    {
        var textBox = e.EditingElement.FindName("textBox") as TextBox;
        var comboBox = e.EditingElement.FindName("comboBox") as ComboBox;
        var listBox = e.EditingElement.FindName("listBox") as ListBox;

        var instruction = e.EditingElement.DataContext as Instruction;

        if (instruction.operationType == "ComboBox")
        {
            textBox.Visibility = System.Windows.Visibility.Collapsed;
            comboBox.Visibility = System.Windows.Visibility.Visible;
            listBox.Visibility = System.Windows.Visibility.Collapsed;
        }
        else if (instruction.operationType == "ListBox")
        {
            //tb.DataContext = null;
            //cb.DataContext = e.EditingElement.DataContext;
            textBox.Visibility = System.Windows.Visibility.Collapsed;
            comboBox.Visibility = System.Windows.Visibility.Collapsed;
            listBox.Visibility = System.Windows.Visibility.Visible;
        }
        else if (instruction.operationType == "TextBox")
        {
            //tb.DataContext = null;
            //cb.DataContext = e.EditingElement.DataContext;
            textBox.Visibility = System.Windows.Visibility.Visible;
            comboBox.Visibility = System.Windows.Visibility.Collapsed;
            listBox.Visibility = System.Windows.Visibility.Collapsed;
        }

    }
}
public class Instruction
{
public string operationType { get; set; }
public string destination { get; set; }
}