在可编辑的组合框中绑定文本框

时间:2015-07-08 07:14:58

标签: wpf combobox

我需要在下拉列表中添加可编辑的文本框。

 <ComboBox IsEditable="True"  ItemTemplate="{StaticResource MethodTemplate}" ItemsSource="{Binding MethodNames}"
                  SelectedIndex="0" SelectedValue="{Binding SelectedMethod}" VerticalAlignment="Top" Grid.Column="1" Grid.Row="0" Height="35" Grid.ColumnSpan="2" Grid.RowSpan="2">
        </ComboBox>



<DataTemplate x:Key="MethodTemplate" DataType="{x:Type models:MethodDetail}">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"></ColumnDefinition>
                    <ColumnDefinition Width="2*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="2*"></RowDefinition>
                </Grid.RowDefinitions>
                <!--To display selected combo values i.e Method Name-->
                <TextBlock Grid.Column="0" Margin="5" Grid.Row="0" HorizontalAlignment="Left"  Text="{Binding MethodName}" ></TextBlock>
                <!--<TextBlock Margin="5" Grid.Column="1" Text="{Binding Parameters ,Converter= {StaticResource listToStringConverter}}"/>-->
                <ItemsControl Grid.Column="1">
                    <StackPanel Orientation="Horizontal">
                        <TextBox Margin="5" Grid.Column="1" Text="Blah"/>
                        <TextBox Margin="5" Grid.Column="1" Text="Blah"/>
                    </StackPanel>
                </ItemsControl>
            </Grid>
        </DataTemplate>

为了描述问题,我在下拉列表中有这些方法的方法和参数,我需要绑定控件(文本框)以便用户在其中输入参数值。当组合框不可编辑时,文本框会显示,但它们不可编辑。

1 个答案:

答案 0 :(得分:0)

有一些事情需要纠正

1.将ComEBox设置为isEditable =“True”无助于编辑ComboBoxItems。
2.应在参考资料部分中定义DataTemplate。无论是在或 3.您一次使用Both SelectedValue和SelectedIndex,这是不正确的。 4. DataTemplate中不需要ItemsControl。您也可以使用网格控件来管理所有内容。

如果所有这些都设置正确,代码运行正常。这是代码:

<Window x:Class="minimizeApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <DataTemplate x:Key="MethodTemplate" >
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"></ColumnDefinition>
                    <ColumnDefinition Width="2*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="2*"></RowDefinition>
                </Grid.RowDefinitions>
                <!--To display selected combo values i.e Method Name-->
                <TextBlock Grid.Column="0" Margin="5" Grid.Row="0" HorizontalAlignment="Left"  Text="{Binding TBProperty}" ></TextBlock>
                <!--<TextBlock Margin="5" Grid.Column="1" Text="{Binding Parameters ,Converter= {StaticResource listToStringConverter}}"/>-->
                <ItemsControl Grid.Column="1">
                    <StackPanel Orientation="Horizontal">
                        <TextBox Margin="5" Grid.Column="1" Text="Blah"/>
                        <TextBox Margin="5" Grid.Column="1" Text="Blah"/>
                    </StackPanel>
                </ItemsControl>
            </Grid>
        </DataTemplate>
    </Window.Resources>
    <Grid>

        <ComboBox IsEditable="True"  ItemTemplate="{StaticResource MethodTemplate}" ItemsSource="{Binding MethodNames}"
                  SelectedIndex="0"  VerticalAlignment="Top" Grid.Column="1" Grid.Row="0" Height="35" Grid.ColumnSpan="2" Grid.RowSpan="2">
        </ComboBox>      
    </Grid>
</Window>

如果正确绑定DataContext,代码应该运行得很好。 :)