我在WPF中有一個ComboBox,它是數據綁定的,並且有控制每個項目顯示方式的數據模板。我已經做好了讓每個項目都顯示兩位文本(用於名稱和路徑屬性)和一個圖像(用於圖標屬性)。控制哪個字段顯示在數據綁定的文本框部分WPF組合框
當我從ComboBox中選擇一個項目時,ComboBox的文本框位會改變爲「TestWPF.Result」,這是我用ComboBox填充的類的名稱。
我感興趣的一個(或兩個)的兩件事情:
我如何改變它,這樣它顯示的領域之一,存在(如因此它顯示的值的值。名稱字段的名稱而不是類的名稱)?
是否有可能讓它在項目列表中使用相同的DataTemplate,以便一旦我選擇了一個項目,它將以與其在項目列表中相同的方式顯示在關閉的組合框中。基本上我有一個名爲ShowResults的DataTemplate和一個使用該模板的ComboBox。我還在一個單獨的ContentControl中添加了我必須在ComboBox中顯示所選項目的詳細信息,但我希望能夠替換ComboBox中的文本框。
更新:
感謝您的第一個答案。正如你所描述的,我嘗試過使用單獨的ContentControl,並且它工作正常。現在的問題是如何用這個ContentControl替換ComboBox的文本框部分。任何提示都會受到歡迎。
此外,是否有可能用ContentControl和文本框的混合替換ComboBox控件的文本框位,這樣我仍然可以鍵入文本框以幫助從ComboBox中選擇項目,但是當我關閉時下拉剩下的ContentControl位將填充文本和圖標的其餘部分。希望這是有道理的 - 如果問題不存在,就提出問題!
代碼:
我一直在問後我的代碼 - 所以在這兒呢。我試圖刪除的東西,我知道肯定是不相關的,但我不知道到底是什麼有關,所以當有疑問我離開的事情英寸
<Window x:Class="TestWPF.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:custom="clr-namespace:TestWPF"
Title="Window1" Height="300" Width="843" Loaded="Window_Loaded">
<Window.Resources>
<DataTemplate x:Key="ShowResult" DataType="TestWPF.Result">
<StackPanel Margin="5" Orientation="Horizontal">
<Image Width="32" Height="32" Source="{Binding Path=Image}"/>
<StackPanel Margin="5">
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}"/>
<TextBlock Text="{Binding Path=Path}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid Width="786">
<Button Height="23" HorizontalAlignment="Right" Margin="0,24,166,0" Name="btnTest" VerticalAlignment="Top" Width="75" Click="btnTest_Click">Add</Button>
<ComboBox StaysOpenOnEdit="True" DropDownClosed="comboBox1_DropDownClosed" PreviewTextInput="comboBox1_PreviewTextInput" SelectionChanged="comboBox1_SelectionChanged" ItemTemplate="{StaticResource ShowResult}" Margin="259,109,22,89" Name="comboBox1" IsEditable="True" />
<ContentControl Height="50" Margin="268,0,22,21" Name="contentControl1" VerticalAlignment="Bottom" Content="{Binding ElementName=comboBox1,Path=SelectedValue}" ContentTemplate="{StaticResource ShowResult}"/>
</Grid>
感謝您的答覆。我將如何將ContentControl放置在TextBox的位置?你有更大的代碼示例,所以我可以看到如何做到這一點? – robintw 2009-02-06 19:26:09