2016-03-20 10 views
0

Bir wpf app C# var.Bir sayım listesine dayalı birleşik giriş kutusu nasıl devre dışı bırakılır

Numaralandırma tarafından doldurulmuş bir açılan kutum var. Örneğin, 1. veya 3. (etc) maddeyi devre dışı bırakmak isterim.

Bu

benim biçimlendirme:

<ComboBox x:Name="cboJobStatus" /> 

benim enum:

public enum enJobStatus 
{ 
    Draft = 0, 
    Booked = 1, 
    Started = 2, 
    OnHold = 3, 
    Completed = 4, 
    Paid = 5, 
    All = 6 
} 

zaman kodu:

cboJobStatus.ItemsSource = Enum.GetNames (typeof (enJobStatus)); Bu çalışma almak

benim acıklı girişimi:

foreach (var item in cboJobStatus.Items) 
{ 
    ((ComboBoxItem)item).IsEnabled = false; 
} 

öğe bir dize değil, bir açılan öğe olduğundan, çalışmak ve çalışma zamanında Hatalı vermedi.

her öğe olarak işe yaramadı Kodunuz açıklamada belirtildiği gibi, enJobStatus adını temsil eder ama bir dize
+1

özel oluşturmak dönüştürücü içine ItemContainerStyle' ek bir parametre geçmek bir seçenek olabilir – dkozl

+0

merhaba, teşekkürler. gönderebileceğin bir örnek var mı? teşekkürler –

cevap

1

, sen ComboBoxItem için özel ItemsContainerStyle oluşturmak ve mevcut DataContext (davanız dize değeri) üzerinden için IsEnabled bağlayabilir

<ComboBox x:Name="cboJobStatus"> 
    <ComboBox.ItemContainerStyle> 
     <Style TargetType="{x:Type ComboBoxItem}"> 
      <Setter Property="IsEnabled" Value="{Binding Path=., Converter={StaticResource EnabledConverter}}"/> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
</ComboBox> 

ve size devre dışı bırakmak istediğiniz değerleri karar dönüştürücü özel IValueConverter/

public class EnabledConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (string)value == "Draft"; 
    } 

    //removed content 
} 

Verilen örnek enabl olacak etkinleştirmek e sadece Taslak değer ama aynı zamanda daha özelleştirilebilir hale getirmek için ConverterParameter dahil ve dönüştürücü aracılığıyla istediğiniz şeye ComboBoxItem` ve bağlama `IsEnabled`` `için

+0

Çok teşekkür ederim –

İlgili konular