Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在组合框内容模板中有两个可编辑的文本框?_C#_Wpf_Textbox - Fatal编程技术网

C# 如何在组合框内容模板中有两个可编辑的文本框?

C# 如何在组合框内容模板中有两个可编辑的文本框?,c#,wpf,textbox,C#,Wpf,Textbox,我希望在组合框模板中有两个文本框s,如下图所示: 我已从MSDN修改了控件模板。这有一个问题:我无法标记内部TextBoxes 在单个文本框中包含多个文本框是否正确 如果答案是否定的,那么替换TextBox的最佳控件是什么 代码: <UserControl x:Class="SearchableListBox_keyNavigator.TrackNameControl" xmlns="http://schemas.microsoft.com/winfx/200

我希望在
组合框
模板中有两个
文本框
s,如下图所示:

我已从MSDN修改了控件模板。这有一个问题:我无法标记内部
TextBoxe
s

在单个
文本框中包含多个
文本框是否正确

如果答案是否定的,那么替换
TextBox
的最佳控件是什么

代码:

<UserControl x:Class="SearchableListBox_keyNavigator.TrackNameControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:SearchableListBox_keyNavigator"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
              <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill"
                     StartPoint="0,0"
                     EndPoint="1,0">
            <LinearGradientBrush.GradientStops>
                <GradientStopCollection>
                    <GradientStop Color="#000000FF"
                    Offset="0" />
                    <GradientStop Color="White"
                    Offset="0.4" />
                    <GradientStop Color="MintCream"
                    Offset="0.6" />
                    <GradientStop Color="#000000FF"
                    Offset="1" />
                </GradientStopCollection>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <ControlTemplate x:Key="ComboBoxToggleButton"
                 TargetType="{x:Type ToggleButton}">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="20" />
                </Grid.ColumnDefinitions>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Normal" />
                        <VisualState x:Name="MouseOver">
                            <Storyboard>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                          Storyboard.TargetName="Border">
                                    <EasingColorKeyFrame KeyTime="0"
                                   Value="{StaticResource ControlPressedColor}" />
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Pressed" />
                        <VisualState x:Name="Disabled">
                            <Storyboard>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                          Storyboard.TargetName="Border">
                                    <EasingColorKeyFrame KeyTime="0"
                                   Value="{StaticResource DisabledControlDarkColor}" />
                                </ColorAnimationUsingKeyFrames>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).
                (SolidColorBrush.Color)"
                                          Storyboard.TargetName="Arrow">
                                    <EasingColorKeyFrame KeyTime="0"
                                   Value="{StaticResource DisabledForegroundColor}" />
                                </ColorAnimationUsingKeyFrames>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).
                (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                          Storyboard.TargetName="Border">
                                    <EasingColorKeyFrame KeyTime="0"
                                   Value="{StaticResource DisabledBorderDarkColor}" />
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                    <VisualStateGroup x:Name="CheckStates">
                        <VisualState x:Name="Checked">
                            <Storyboard>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                          Storyboard.TargetName="Border">
                                    <EasingColorKeyFrame KeyTime="0"
                                   Value="{StaticResource ControlPressedColor}" />
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Unchecked" />
                        <VisualState x:Name="Indeterminate" />
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <Border x:Name="Border"
            Grid.ColumnSpan="2"
            CornerRadius="2"
            BorderThickness="1">
                    <Border.BorderBrush>
                        <LinearGradientBrush EndPoint="0,1"
                             StartPoint="0,0">
                            <GradientStop Color="{DynamicResource BorderLightColor}"
                        Offset="0" />
                            <GradientStop Color="{DynamicResource BorderDarkColor}"
                        Offset="1" />
                        </LinearGradientBrush>
                    </Border.BorderBrush>
                    <Border.Background>

                        <LinearGradientBrush StartPoint="0,0"
                             EndPoint="0,1">
                            <LinearGradientBrush.GradientStops>
                                <GradientStopCollection>
                                    <GradientStop Color="{DynamicResource ControlLightColor}" />
                                    <GradientStop Color="{DynamicResource ControlMediumColor}"
                            Offset="1.0" />
                                </GradientStopCollection>
                            </LinearGradientBrush.GradientStops>
                        </LinearGradientBrush>

                    </Border.Background>
                </Border>
                <Border Grid.Column="0"
            CornerRadius="2,0,0,2"
            Margin="1" >
                    <Border.Background>
                        <SolidColorBrush Color="{DynamicResource ControlLightColor}"/>
                    </Border.Background>
                </Border>

                <Path x:Name="Arrow"
          Grid.Column="1"
          HorizontalAlignment="Center"
          VerticalAlignment="Center"
           Data="M2.33496 0.802746C2.33496 0.397737 2.66329 0.0694122 3.06829 0.0694122C3.4733 0.0694122 3.80163 0.397737 3.80163 0.802746V2.06941H6.54004V0.802746C6.54004 0.397737 6.86836 0.0694122 7.27337 0.0694122C7.67838 0.0694122 8.00671 0.397737 8.00671 0.802746V2.06941H9.41028C9.68643 2.06941 9.91029 2.29327 9.91029 2.56941C9.91029 2.84555 9.68643 3.06941 9.41029 3.06941H8.00671V5.56941H9.41028C9.68643 5.56941 9.91029 5.79327 9.91029 6.06941C9.91029 6.34555 9.68643 6.56941 9.41029 6.56941H8.00671V9.06941H9.41028C9.68643 9.06941 9.91029 9.29327 9.91029 9.56941C9.91029 9.84555 9.68643 10.0694 9.41029 10.0694H8.00671V11.3361C8.00671 11.7411 7.67838 12.0694 7.27337 12.0694C6.86836 12.0694 6.54004 11.7411 6.54004 11.3361V10.0694H3.80163V11.3361C3.80163 11.7411 3.4733 12.0694 3.06829 12.0694C2.66329 12.0694 2.33496 11.7411 2.33496 11.3361V10.0694H0.876954C0.600811 10.0694 0.376953 9.84555 0.376953 9.56941C0.376953 9.29327 0.600811 9.06941 0.876953 9.06941H2.33496V6.56941H0.876954C0.600811 6.56941 0.376953 6.34555 0.376953 6.06941C0.376953 5.79327 0.600811 5.56941 0.876953 5.56941H2.33496V3.06941H0.876954C0.600811 3.06941 0.376953 2.84555 0.376953 2.56941C0.376953 2.29327 0.600811 2.06941 0.876953 2.06941H2.33496V0.802746ZM3.80163 9.06941H6.54004V6.56941H3.80163V9.06941ZM6.54004 3.06941V5.56941H3.80163V3.06941H6.54004Z">
                    <Path.Fill>
                        <SolidColorBrush Color="#8E8E8E"/>
                    </Path.Fill>
                </Path>
            </Grid>
        </ControlTemplate>

        <ControlTemplate x:Key="ComboBoxTextBox">
            <StackPanel Orientation="Horizontal" Width="290"  >

                <TextBox x:Name="KMValueText" Width="40"  PreviewTextInput="UIElement_OnPreviewTextInput"  Height="{TemplateBinding TextBox.Template}"  Text="{Binding Path=KMText,Mode=TwoWay ,RelativeSource={RelativeSource FindAncestor, 
                                    AncestorType=local:TrackNameControl, 
                                    AncestorLevel=1},UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left" VerticalContentAlignment="Center"
                         TextAlignment="Left" GotFocus="Text_OnGotFocus" PreviewKeyDown="Mycombo_PreviewKeyDown" TabIndex="0" Style="{StaticResource TextBoxFocusStyle}" >

                </TextBox>
                <TextBlock  Width="auto" Background="Transparent" Text="km " FontStyle="Italic"  VerticalAlignment="Center" HorizontalAlignment="Center" >
                    <TextBlock.Style>
                        <Style TargetType="TextBlock">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsFocused ,ElementName=KMValueText}" Value="False">
                                    <Setter Property="Foreground" Value="Gray"></Setter>

                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBlock.Style>
                </TextBlock>

                <TextBlock  Width="Auto"  Text="@" FontStyle="Italic"   Background ="Transparent" VerticalAlignment="Center" HorizontalAlignment="Center" >
                    <TextBlock.Style>
                        <Style TargetType="TextBlock">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsFocused ,ElementName=TrackNameText}" Value="False">

                                    <Setter Property="Foreground" Value="Gray"></Setter>

                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBlock.Style>
                </TextBlock>

                <Border x:Name="TrackBorder">
                    <TextBox x:Name="TrackNameText" Width="190"  Height="{TemplateBinding TextBox.Template}"  Text="{Binding Path=TrackText,Mode=TwoWay,RelativeSource={RelativeSource FindAncestor, 
                                    AncestorType=local:TrackNameControl, 
                                    AncestorLevel=1}, UpdateSourceTrigger=PropertyChanged}"  
                         ToolTip="{Binding Path=TrackText}"  VerticalAlignment="Center"
                        HorizontalAlignment="Right" 
                        VerticalContentAlignment="Center" Style="{StaticResource TextBoxFocusStyle}"  IsEnabled="{Binding Path=IsStartKmMarker,RelativeSource={RelativeSource FindAncestor,AncestorType= local:TrackNameControl, AncestorLevel=1}}" GotFocus="Text_OnGotFocus" PreviewKeyDown="Mycombo_PreviewKeyDown">
                        <!--<TextBox.CommandBindings>
                            <CommandBinding Command="Delete" Executed="DeleteAll"></CommandBinding>
                        </TextBox.CommandBindings>
                        <TextBox.InputBindings>
                            <KeyBinding Key="Delete" Command="Delete" ></KeyBinding>
                        </TextBox.InputBindings>-->
                    </TextBox>
                </Border>
            </StackPanel>
        </ControlTemplate>


        <Style x:Key="{x:Type ComboBox}"
       TargetType="{x:Type ComboBox}">
            <Setter Property="SnapsToDevicePixels"
          Value="true" />
            <Setter Property="OverridesDefaultStyle"
          Value="true" />
            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility"
          Value="Auto" />
            <Setter Property="ScrollViewer.VerticalScrollBarVisibility"
          Value="Auto" />
            <Setter Property="ScrollViewer.CanContentScroll"
          Value="true" />
            <Setter Property="MinWidth"
          Value="120" />
            <Setter Property="MinHeight"
          Value="20" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Grid>
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Normal" />
                                    <VisualState x:Name="MouseOver" />
                                    <VisualState x:Name="Disabled">
                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetName="PART_EditableTextBox"
                                                Storyboard.TargetProperty="(TextElement.Foreground).
                      (SolidColorBrush.Color)">
                                                <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource DisabledForegroundColor}" />
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="EditStates">
                                    <VisualState x:Name="Editable">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)"
                                                 Storyboard.TargetName="PART_EditableTextBox">
                                                <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="{x:Static Visibility.Visible}" />
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames
                      Storyboard.TargetProperty="(UIElement.Visibility)"
                                                 Storyboard.TargetName="ContentSite">
                                                <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="{x:Static Visibility.Hidden}" />
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="Uneditable" />
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <ToggleButton x:Name="ToggleButton"
                        Template="{StaticResource ComboBoxToggleButton}" PreviewKeyDown="Mycombo_PreviewKeyDown"
                        Grid.Column="2"
                        Focusable="false"
                        ClickMode="Press"
                        IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, 
              RelativeSource={RelativeSource TemplatedParent}}"/>
                            <ContentPresenter x:Name="ContentSite"
                            IsHitTestVisible="False"
                            Content="{TemplateBinding SelectionBoxItem}"
                            ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                            ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                            Margin="3,3,23,3"
                            VerticalAlignment="Stretch"
                            HorizontalAlignment="Left">
                            </ContentPresenter>
                            <!--<StackPanel Orientation="Horizontal" Width="250" x:Name="PART_EditableTextBox" >

                                <TextBox  KeyboardNavigation.TabIndex="0" x:Name="KMValueText" Width="40"  BorderBrush="Transparent"  Text="{Binding Path=KMText,Mode=TwoWay ,RelativeSource={RelativeSource FindAncestor, 
                                    AncestorType=local:TrackNameControl, 
                                    AncestorLevel=1},UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left" VerticalContentAlignment="Center"
                         TextAlignment="Right" GotFocus="Text_OnGotFocus" PreviewKeyDown="Mycombo_PreviewKeyDown" TabIndex="0"  >

                                </TextBox>
                                <TextBlock  Width="auto" Background="Transparent" Text="km " FontStyle="Italic"  VerticalAlignment="Center" HorizontalAlignment="Center" >
                                    <TextBlock.Style>
                                        <Style TargetType="TextBlock">
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding IsFocused ,ElementName=KMValueText}" Value="False">
                                                    <Setter Property="Foreground" Value="Gray"></Setter>

                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>

                                <TextBlock  Width="Auto"  Text="@" FontStyle="Italic"   Background ="Transparent" VerticalAlignment="Center" HorizontalAlignment="Center" >
                                    <TextBlock.Style>
                                        <Style TargetType="TextBlock">
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding IsFocused ,ElementName=TrackNameText}" Value="False">

                                                    <Setter Property="Foreground" Value="Gray"></Setter>

                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBlock.Style>
                                </TextBlock>

                                <Border x:Name="TrackBorder">
                                    <TextBox x:Name="TrackNameText" KeyboardNavigation.TabIndex="1" Width="130"  BorderBrush="Transparent" Text="{Binding Path=TrackText,Mode=TwoWay,RelativeSource={RelativeSource FindAncestor, 
                                    AncestorType=local:TrackNameControl, 
                                    AncestorLevel=1}, UpdateSourceTrigger=PropertyChanged}"  
                         ToolTip="{Binding Path=TrackText}"  VerticalAlignment="Center"
                        HorizontalAlignment="Right" 
                        VerticalContentAlignment="Center" TabIndex="1"  IsEnabled="{Binding Path=IsStartKmMarker,RelativeSource={RelativeSource FindAncestor,AncestorType= local:TrackNameControl, AncestorLevel=1}}" GotFocus="Text_OnGotFocus" PreviewKeyDown="Mycombo_PreviewKeyDown">

                                    </TextBox>
                                </Border>
                            </StackPanel>-->
                            <TextBox x:Name="PART_EditableTextBox"
                   Style="{x:Null}"
                   Template="{StaticResource ComboBoxTextBox}" 
                   HorizontalAlignment="Left"
                   VerticalAlignment="Bottom"
                   Margin="3,3,23,3"
                   Focusable="True"
                   Background="Transparent"
                   Visibility="Hidden"
                   IsReadOnly="{TemplateBinding IsReadOnly}" IsTabStop="True" />

                            <Popup x:Name="_popup" KeyboardNavigation.TabIndex="3"
                 Placement="Bottom"
                 IsOpen="{TemplateBinding IsDropDownOpen}"
                 AllowsTransparency="True"
                 Focusable="False"
                 PopupAnimation="Slide">
                                <Grid x:Name="DropDown"
                  SnapsToDevicePixels="True"
                  MinWidth="{TemplateBinding ActualWidth}"
                  MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                    <Border x:Name="DropDownBorder"
                      BorderThickness="1">
                                        <Border.BorderBrush>
                                            <SolidColorBrush Color="{DynamicResource BorderMediumColor}" />
                                        </Border.BorderBrush>
                                        <Border.Background>
                                            <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
                                        </Border.Background>
                                    </Border>
                                    <ScrollViewer Margin="4,6,4,6"
                            SnapsToDevicePixels="True">
                                        <StackPanel IsItemsHost="True"
                            KeyboardNavigation.DirectionalNavigation="Contained" />
                                    </ScrollViewer>
                                </Grid>
                            </Popup>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="HasItems"
                   Value="false">
                                <Setter TargetName="DropDownBorder"
                    Property="MinHeight"
                    Value="95" />
                            </Trigger>
                            <Trigger Property="IsGrouping"
                   Value="true">
                                <Setter Property="ScrollViewer.CanContentScroll"
                    Value="false" />
                            </Trigger>
                            <Trigger SourceName="_popup"
                   Property="AllowsTransparency"
                   Value="False">
                                <Setter TargetName="DropDownBorder"
                    Property="CornerRadius"
                    Value="4" />
                                <Setter TargetName="DropDownBorder"
                    Property="Margin"
                    Value="0,2,0,0" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="{x:Type ComboBoxItem}"
       TargetType="{x:Type ComboBoxItem}">
            <Setter Property="SnapsToDevicePixels"
          Value="true" />
            <Setter Property="OverridesDefaultStyle"
          Value="true" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBoxItem}">

                        <Border x:Name="Border"
                Padding="2"
                SnapsToDevicePixels="true"
                Background="Transparent">
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="SelectionStates">
                                    <VisualState x:Name="Unselected" />
                                    <VisualState x:Name="Selected">
                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                Storyboard.TargetProperty="(Panel.Background).
                    (SolidColorBrush.Color)">
                                                <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlPressedColor}" />
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="SelectedUnfocused">
                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                Storyboard.TargetProperty="(Panel.Background).
                    (SolidColorBrush.Color)">
                                                <EasingColorKeyFrame KeyTime="0"
                                         Value="{StaticResource ControlPressedColor}" />
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <TextBlock Text="{Binding Item3}" />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


    </UserControl.Resources>
    <Grid>


            <ComboBox x:Name="TrackComboBoxEx" IsEditable="True"
                  Width="230"
                  Height="25"
                  IsTextSearchEnabled="True"
                  ItemsSource="{Binding Path=ItemsSource,RelativeSource={RelativeSource FindAncestor,AncestorType=local:TrackNameControl,AncestorLevel=1}}"  SelectedItem="{Binding Path=SelectedItem , RelativeSource={RelativeSource FindAncestor,AncestorType=local:TrackNameControl,AncestorLevel=1}}" 
                      SelectionChanged="Mycombo_SelectionChanged" PreviewKeyDown="Mycombo_PreviewKeyDown"  PreviewMouseDown="TrackComboBoxEx_OnPreviewMouseDown" >

            </ComboBox>

    </Grid>
</UserControl>