【问题标题】:Set the Listbox Selectedindex when textbox is selected WP7选择文本框时设置列表框 Selectedindex WP7
【发布时间】:2014-01-04 15:36:45
【问题描述】:

我已经为 Listbox 项设置了 DataTemplate,使其包含一个 TextBlock 和一个 TextBox。

我面临的问题是,当列表显示时,其 selectionindex 为 -1,并假设如果用户直接点击任何列表项的文本框,则该列表项尚未设置为选定项列表框。

当用户直接关注文本框时,如何更改/设置列表框的选定索引/项目?


好吧,让我说得更清楚

我的ListBox DataTemplate如下

<ListBox.ItemTemplate>
   <DataTemplate>
     <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="325"/>
            <ColumnDefinition Width="80"/>
        </Grid.ColumnDefinitions>

       <TextBlock  Text="{Binding ProdName}" Margin="0,5,0,0" Width="315" FontSize="36" Grid.Column="0"  ></TextBlock>
       <TextBox InputScope="Number" Grid.Column="1" Text="{Binding ProdQty}"  TextAlignment="Center" Width="80" HorizontalAlignment="Left" Name="txtQty" GotFocus="ClearZero" LostFocus="TextBoxLostFocus"></TextBox>

      </Grid>
  </DataTemplate>

现在,当页面打开时,如果已填充列表框并且其 SelectedIndex 为 -1。现在假设如果用户直接点击(或设置焦点)到说第三个文本框(即列表框中第三个 ListItem 的文本框),我希望列表框 SelectedIndex 从 -1 更改为 2(第三个项目索引)。

当我在第三个(比如说)TextBox 接收焦点时检索 ListBox 的 SelectedIndex 时,它返回一个值 -1。

希望我很清楚。 谢谢

【问题讨论】:

    标签: silverlight windows-phone-7


    【解决方案1】:

    点击它会设置 SelectedItem 和 SelectObject,因此它们最初为 -1 和 null 是完全合理的。

    如果您想初始化它,只需在填充后将 selectedindex 设置为列表中的一项即可。请注意在执行此操作之前检查 items.count > 0。

    【讨论】:

    • 我的问题不在于设置 listbox.SelectedIndex = something,我想知道当焦点直接进入 listitem 的文本框时如何设置列表框 selectedindex(文本框是数据模板的成员列表)
    • 术语混淆,我以为您的意思是 ListBox 与标准 ListBox 控件中的一样。在没有更多信息的情况下,我会假设该项目有一个父项(或者可以推断)并执行类似 this.Parent.SelectedItem = Parent.Items.Find(this) 的操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多