Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# silverlight:在combobox自定义项模板中编辑文本框值_C#_.net_Silverlight_Xaml_Silverlight 4.0 - Fatal编程技术网

C# silverlight:在combobox自定义项模板中编辑文本框值

C# silverlight:在combobox自定义项模板中编辑文本框值,c#,.net,silverlight,xaml,silverlight-4.0,C#,.net,Silverlight,Xaml,Silverlight 4.0,我已经为我的组合框创建了一个自定义项目模板,其中包含一个文本框。当组合框打开(下拉)时,我可以在文本框中键入内容,但一旦选中该项且下拉框关闭,我就无法再在文本框中写入内容 <ComboBox ItemsSource="{Binding CriteriaCollection}" Margin="2,0,5,5" Height="35" Grid.Column="1"> <ComboBox.ItemTemplate> <DataTem

我已经为我的组合框创建了一个自定义项目模板,其中包含一个文本框。当组合框打开(下拉)时,我可以在文本框中键入内容,但一旦选中该项且下拉框关闭,我就无法再在文本框中写入内容

<ComboBox ItemsSource="{Binding CriteriaCollection}" Margin="2,0,5,5" Height="35" Grid.Column="1">
        <ComboBox.ItemTemplate>
          <DataTemplate>
            <Grid Height="25" HorizontalAlignment="Stretch">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="20" />
                <ColumnDefinition Width="150"/>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
              </Grid.ColumnDefinitions>
              <RadioButton Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding IsSelected, Mode=TwoWay}" />
              <TextBlock Grid.Column="1" Text="{Binding DisplayText}" VerticalAlignment="Center"   />
              <TextBox Grid.Column="2" Text="{Binding Value,Mode=TwoWay}" VerticalAlignment="Center" MinWidth="{Binding ValueTextBoxMinWidth}" MaxWidth="{Binding ValueTextBoxMaxWidth}" HorizontalAlignment="Left"/>
              <TextBlock Grid.Column="3" Text="{Binding PostValueText}" VerticalAlignment="Center" Visibility="{Binding ComparatorVisibility}" Margin="5,0,5,0" HorizontalAlignment="{Binding PostValueTextHoirzontalAlignment}" />
              <TextBox Grid.Column="4" Text="{Binding UpperValue,Mode=TwoWay}" VerticalAlignment="Center" MinWidth="40" Visibility="{Binding UpperValueVisibility}" Margin="5,0,5,0"/>
            </Grid>
          </DataTemplate>
        </ComboBox.ItemTemplate>
      </ComboBox>

从上面的xaml可以看出,我通过绑定到viewmodel上的一些属性来决定模板中显示什么,因此不仅仅是有一个包含文本的组合框,还有一个单独的文本框控件


选择项目后,是否有任何方法允许编辑组合框中的文本?

不幸的是,组合框关闭时显示的内容与项目模板(显示下拉列表时显示的内容)完全无关


我认为您唯一的希望是对ComboBox进行子类化并重新对其进行模板化。新模板将在ContentPresenter中有一个TextBox而不是TextBlock。在您的子类中,您已经在文本框的文本和所选项目的文本之间设置了双向绑定。

正如RobSiklos所说,您总体上可以为您的组合框使用自定义模板,但我认为您可以在xaml本身中这样做,编写自定义模板,使用OverridedFaultStyle属性,RobSiklos说,在内容演示器中再次使用文本框而不是文本块

然后,您还可以使用触发器,如when IsSelected和其他属性,处理您的内容

有关如何创建自定义模板以及如何在组合框中使用类似模板的信息,请参见本文,希望对您有所帮助