2017-08-30 88 views
1

我將從我的代碼示例開始。這是一個WPF應用程序。如何在wpf組合框中選擇項目作爲前一個項目的前綴?

MainWindow.xaml:

<Window x:Class="DemoComboBoxProblem.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:DemoComboBoxProblem" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="60" Width="200"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <ComboBox Name="CB0" Grid.Column="0" Width="60"> 
      <ComboBoxItem>CRLF</ComboBoxItem> 
      <ComboBoxItem>CR</ComboBoxItem> 
      <ComboBoxItem>LF</ComboBoxItem> 
      <ComboBoxItem>LFCR</ComboBoxItem> 
     </ComboBox> 
     <ComboBox Name="CB1" Grid.Column="1" Width="60"> 
      <ComboBoxItem>CRLF</ComboBoxItem> 
      <ComboBoxItem>AA</ComboBoxItem> 
      <ComboBoxItem>BB</ComboBoxItem> 
      <ComboBoxItem>LFCR</ComboBoxItem> 
     </ComboBox> 
    </Grid> 
</Window> 

MainWindow.xaml.cs:

using System.Windows; 

namespace DemoComboBoxProblem 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      CB0.Text = "CR"; 
      CB1.Text = "AA"; 
     } 
    } 
} 

我希望通過編程選擇CB1在CB0項目 「CR」 和項目 「AA」。

當我運行這個,CB0什麼也沒有顯示,並且(我假設)沒有項目被選中。 CB1正確顯示並選擇了「AA」。我認爲這與「CR」是「CRLF」的前綴有關。如果我改變了項目的順序,我可以使它工作,但我想知道:按照給定的順序使它與項目一起工作的正確方法是什麼?

感謝

+0

你爲什麼要以編程方式做到這一點?如果你願意,你可以在XAML中完成。 – CodingYoshi

+0

您可以在ComboBox的XAML SelectedIndex中設置。但最好的方法是使用綁定的MVVM模式。 – Bibop

+0

您是否嘗試過使用'CB0.SelectedValue =「CR」;'?它可能會有所不同,但爲什麼'.Text'不起作用是很常見的。 –

回答

0

試試這個,添加SelectedValuePath = 「內容」 的組合框屬性。

<ComboBox Name="CB0" Grid.Column="0" Width="60" SelectedValuePath="Content"> 
    <ComboBoxItem>CRLF</ComboBoxItem> 
    <ComboBoxItem>CR</ComboBoxItem> 
    <ComboBoxItem>LF</ComboBoxItem> 
    <ComboBoxItem>LFCR</ComboBoxItem> 
</ComboBox> 

在代碼中使用:

CB0.SelectedValue = "CR"; 
CB1.SelectedValue = "AA"; 
相關問題