PhoneTextBox中的文本消失

时间:2013-09-25 13:33:42

标签: windows-phone-7 windows-phone-8 windows-phone-7.1

在以下情况下我该怎么办?

我有一个简单的页面。在后面的代码中,我添加了PhoneTextBox控件来进行一些数据过滤。但有时(经常)当我尝试写东西时,我看到,里面的文字是透明的或折叠的或其他东西,所以我没有看到它。即使我选择此文本,我也看不到它。

// Generating of a PhoneTextBox    

SearchBox = new Microsoft.Phone.Controls.PhoneTextBox();
SearchBox.DataContext = searchBoxContext;
SearchBox.Name = string.Format("SearchBox_{0}", Guid.NewGuid());
SearchBox.Visibility = Visibility.Collapsed;

// Adding Phone text box in a Grid on the Page

RowDefinition rd = new RowDefinition();
rd.Height = GridLength.Auto;
PageDynamicGrid.RowDefinitions.Insert(0, rd);
Grid.SetRow(generator.SearchBox, 0);

foreach (FrameworkElement child in PageDynamicGrid.Children)
{
    Grid.SetRow(child, Grid.GetRow(child) + 1);
}

SearchBoxContext = (generator.SearchBox.DataContext as SearchButtonModel);
SearchBoxContext.SearchTextChanged += SearchBoxContext_SearchTextChanged;
generator.SearchBox.TextChanged += SearchBox_TextChanged;
generator.SearchBox.LostFocus += SearchBox_LostFocus;
generator.SearchBox.KeyUp += SearchBox_KeyUp;
generator.SearchBox.DataContext = null;
PageDynamicGrid.Children.Add(generator.SearchBox);
PageDynamicGrid.UpdateLayout();

和page.xaml

<Grid x:Name="PageDynamicGrid" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="{Binding Title}"
                   Style="{StaticResource PhoneTextTitle1Style}" />
    </StackPanel>

    <ListBox Grid.Row="1" Margin="12,0"
             ItemsSource="{Binding PageDynamicContent, Mode=OneWay}"/>    
</Grid>

此页面的几乎所有内容(包括搜索框)都是动态创建的,但其他内容是一些按钮和链接,如果我有搜索框,我需要对其进行过滤。过滤器有效,但用户不喜欢搜索框中的折叠文字。所以看起来就像那样(并且标记前面没有空格)

enter image description here

1 个答案:

答案 0 :(得分:0)

所以,我不知道为什么,但问题似乎是行动的顺序:

  1. 首先创建元素,更改网格列和行定义 并在网格中添加元素。
  2. 更新网格布局。
  3. 只有在完成所有这些操作后,我们才能折叠PhoneTextBox。
  4. 它对我有用。