2013-02-15 1 views
0

J'ai une zone de liste déroulante, illustrée ci-dessous. Pourquoi le code-behind ne tire-t-il pas toujours?WPF ComboBox non Activation de la sélection

XAML:

<ComboBox Height="23" 
         Name="cbAppendCreate" 
         VerticalAlignment="Top" 
         Width="120" 
         Margin="{StaticResource ConsistentMargins}" 
         ItemsSource="{Binding Path=CbCreateAppendItems}" 
         SelectedValue="{Binding Path=CbAppendCreate,UpdateSourceTrigger=PropertyChanged}" /> 

CodeBehind:

private string cbAppendCreate; 
public string CbAppendCreate { 
    get { 
     //.... 
     return cbAppendCreate 
    } 
    set { //This doesn't fire when selecting the first of 2 Items, 
      //but always fires when selecting the 2nd of two items 
      //.... 
     cbAppendCreate = value; 
    } 
} 
+0

Des erreurs de liaison dans la fenêtre de sortie? – Haspemulator

+0

@Haspemulator No – sammarcow

+0

Impossible de reproduire sur ma configuration simple. Post plus de code, ou je peux poster le mien, si vous voulez. – Haspemulator

Répondre

0

Je posterai mon code de travail ici, il est très simple. Je viens de créer une application WPF par défaut en utilisant le modèle VS2012. Voici le contenu MainWindow.xaml:

<Window x:Class=" 
    WpfApplication1.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"> 
<StackPanel> 
    <ComboBox Height="23" 
        Name="cbAppendCreate" 
        VerticalAlignment="Top" 
        Width="120" 
        ItemsSource="{Binding Path=CbCreateAppendItems}" 
        SelectedValue="{Binding Path=CbAppendCreate,UpdateSourceTrigger=PropertyChanged}" /> 
    <TextBlock Text="{Binding CbAppendCreate}"></TextBlock> 
</StackPanel> 

est ici code-behind:

namespace WpfApplication1 
    { 
    public class DataSource 
    { 
     public List<string> CbCreateAppendItems { get; set; } 
     public string CbAppendCreate { get; set; } 
     public DataSource() 
     { 
      CbCreateAppendItems = new List<string>() { "create", "append" }; 
     } 
    } 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = new DataSource(); 
     } 
    } 
} 

Lorsque je sélectionne des valeurs différentes dans combo-box, les mises à jour TextBlock à la même valeur, donc de la machine virtuelle la propriété est également mise à jour.

+0

J'accepte ceci parce que cela fonctionne et j'ai créé un exemple de travail qui se déclenche sur chaque sélection, mais mon problème persiste avec l'original. Le setter ne tire pas sur un changement de valeur ComboBox que ce soit. Je ne suis pas sûr d'où le bug est. – sammarcow

Questions connexes