![](/img/trans.png)
[英]ComboBox with custom item template showing template and not text when selecting value
[英]silverlight: Editing Textbox Value in combobox custom item template
我為我的組合框創建了一個自定義項目模板,其中有一個文本框。 當組合框打開(正在下拉)時,我可以在文本框中鍵入內容,但是一旦選中該項目且下拉列表關閉,我將無法再在文本框中輸入內容。
<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時顯示的內容與ItemTemplate完全無關(顯示下拉列表時即顯示的內容)。
我認為您唯一的希望是繼承ComboBox並重新創建模板。 新模板在ContentPresenter內部將具有TextBox而不是TextBlock。 在子類中,您將在TextBox的文本和所選項目的文本之間建立雙向綁定。
您可以按照RobSiklos的說明在整個組合框中使用自定義模板,但是我認為您可以在xaml本身中做到這一點,編寫自定義模板,使用overridedefaultstyle屬性,在內容演示者中再次使用Textbox而不是Textblock, RobSiklos。
然后,您還可以使用觸發器(如IsSelected時)和其他屬性來處理您的工作。
有關如何創建自定義模板的信息,請參見此鏈接 ,並為您的組合框使用類似的模板希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.