如何在焦点上突出显示文本框中的文本

时间:2012-08-20 01:27:07

标签: wpf listview textbox

这似乎是一个简单的问题,但我无法在网上找到答案。我想要的唯一一点就是当用户进入时(文件框中的“价格”或“数量”),在文本框中突出显示内容。现在需要先双击才能编辑内容。 当焦点集中时,应自动选择内容。 我怎么能这样做?

谢谢

<Window x:Class="Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="350" Width="479" Name="Window1">
<Window.Resources>
    <CollectionViewSource x:Key="MasterView" />
    <CollectionViewSource Source="{Binding Source={StaticResource MasterView}, Path='OrderDetails'}" x:Key="DetailView" />
    <CollectionViewSource x:Key="CustomerLookup" />
    <CollectionViewSource x:Key="ProductLookup" />
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="42" />
        <RowDefinition Height="110" />
        <RowDefinition Height="42" />
        <RowDefinition Height="147*" />
    </Grid.RowDefinitions>
    <Grid Grid.Row="1" Name="Grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="146*" />
            <ColumnDefinition Width="346*" />
        </Grid.ColumnDefinitions>
        <StackPanel Name="StackPanel1" >
            <Label Height="28" Name="Label1" Width="Auto" HorizontalContentAlignment="Right">ID:</Label>
            <Label Height="28" Name="Label2" Width="Auto" HorizontalContentAlignment="Right">Customer:</Label>
            <Label Height="28" Name="Label3" Width="Auto" HorizontalContentAlignment="Right">Order Date:</Label>
            <Label Height="28" Name="Label4" Width="Auto" HorizontalContentAlignment="Right">Ship Date:</Label>
        </StackPanel>
        <StackPanel Name="StackPanel2" Grid.Column="1" DataContext="{Binding Source={StaticResource MasterView}}">
            <TextBox Height="23" Name="TextBox1" Width="100" Margin="2" HorizontalAlignment="Left" IsReadOnly="True" 
                     Text="{Binding Path=OrderID, Mode=OneWay}"/>

            <ComboBox Height="23" Name="ComboBox1" Width="177" Margin="2"  HorizontalAlignment="Left" 
                      IsEditable="False"
                      ItemsSource="{Binding Source={StaticResource CustomerLookup}}"
                      SelectedValue="{Binding Path=CustomerID}" 
                      SelectedValuePath="CustomerID" 
                      DisplayMemberPath="Name"/>

            <TextBox Height="23" Name="TextBox3" Width="100" Margin="2" HorizontalAlignment="Left" 
                     Text="{Binding Path=OrderDate}"/>
            <TextBox Height="23" Name="TextBox4" Width="100" Margin="2" HorizontalAlignment="Left" 
                     Text="{Binding Path=ShipDate}"/>

        </StackPanel>
    </Grid>
    <StackPanel Name="StackPanel3" Orientation="Horizontal">
        <Button Height="25" Name="btnAdd" Width="Auto" Margin="3">Add Order</Button>
        <Button Height="25" Name="btnDelete" Width="Auto" Margin="3">Delete Order</Button>
        <Button Height="25" Name="btnPrevious" Width="75" Margin="3">Previous</Button>
        <Button Height="25" Name="btnNext" Width="75" Margin="3">Next</Button>
        <Button Height="25" Name="btnSave" Width="75" Margin="3">Save</Button>
    </StackPanel>
    <StackPanel Name="StackPanel4" Orientation="Horizontal" Grid.Row="2">
        <Button Height="25" Name="btnAddDetail" Width="Auto" Margin="3">Add Detail</Button>
        <Button Height="25" Name="btnDeleteDetail" Width="Auto" Margin="3">Delete Detail</Button>
    </StackPanel>
    <ListView Grid.Row="3" Name="ListView1" 
              IsSynchronizedWithCurrentItem="True"
              ItemsSource="{Binding Source={StaticResource DetailView}}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                <EventSetter Event="GotFocus" Handler="Item_GotFocus" />
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.View>
            <GridView>
                <GridViewColumn Header="ID" Width="75">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Label Content="{Binding Path=OrderDetailID}" 
                                     Margin="-6,0,-6,0"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="OrderID" Width="75">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Label Content="{Binding Path=OrderID}" 
                                     Margin="-6,0,-6,0"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Product" Width="150">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox IsEditable="False" 
                              Name="cboProduct"
                              IsSynchronizedWithCurrentItem="False"       
                              ItemsSource="{Binding Source={StaticResource ProductLookup}}"
                              SelectedValue="{Binding Path=ProductID}" 
                              DisplayMemberPath="Name" 
                              SelectedValuePath="ProductID" 
                              Margin="-6,0,-6,0"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Quantity" Width="75">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Path=Quantity}" 
                                     Margin="-6,0,-6,0"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Price" Width="75">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Path=Price}" 
                                     Margin="-6,0,-6,0"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
   </Grid>
</Window>

1 个答案:

答案 0 :(得分:4)

您必须使用TextBox.SelectAll属性。您可以在每个文本框或每个窗口的基础上手动连接它,也可以在全局范围内进行更多操作。 this article描述了一种全局执行方法,this answer描述了另一种方法。