我需要在下拉列表中添加可编辑的文本框。
<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>
为了描述问题,我在下拉列表中有这些方法的方法和参数,我需要绑定控件(文本框)以便用户在其中输入参数值。当组合框不可编辑时,文本框会显示,但它们不可编辑。
答案 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,代码应该运行得很好。 :)