2015-01-14 14 views
8

Konuyla ilgili birkaç soru okuyorum, ancak cevaplar benim için çalışmıyor. Ben StlContainer.cs deklare edilmediği aşağıdaki enum vardır: enum küresel bir enum yapar StlContainer sınıf tanımının dışında bildirilmişKüresel enum XAML'de Etiket değeri olarak nasıl atanır?

public enum ToothVisualModelType 
{ 
    CoordinateSystemPivot = 0, 
    Tooth = 1, 
    Crown = 2, 
    Gums = 3 
} 

. Farklı XAML kontrollerinin Etiket özelliğine değerlerini atamak istiyorum, bu yüzden böyle yapmak çalıştı:

<xctk:ColorPicker Tag="{x:Static local:ToothVisualModelType.Tooth}" 
        Name="colorPickerTooth" 
        Width="110" 
        Grid.Column="1" 
        Grid.Row="3" 
        SelectedColorChanged="colorPickerTooth_SelectedColorChanged" 
        DisplayColorAndName="True" 
        Margin="0,0,10,5"> 
</xctk:ColorPicker> 

Ama hata var:

Error 1 Unknown build error, 'Key cannot be null. Parameter name: key Line 234 Position 43.' D:\Visual Studio\Projects\Dental Viewer\Dental Viewer 1.2\Dental Viewer\MainWindow.xaml 234 43 Dental Viewer 1.2

denedim MainWindow için enum hareketli .xaml.cs, ben

Tag="{x:Static local:StlContainer+ToothVisualModelType.Tooth}" 

ve

Tag="{x:Static MyNamespace:ToothVisualModelType.Tooth}" 
012 denedik

Bunu bir Etiket denetimindeki Etikete atamaya ve aynı hatayı almaya çalıştım. Burada neyi özlüyorum? Bu geçici çözüm için bir çeşit Bağlama kullanabilir miyim?

Not: Değeri yazıp Tag="{x:Static }"'a ulaştığımda, otomatik tamamlama yalnızca Üye parametresinin bu Tag="{x:Static Member=}" örneğinde olduğu gibi tamamlamasını önerir.

+0

XAML'de yerel ad alanını nasıl tanımlarsınız? Bu isim alanında "ToothVisualModelType" var mı? – dkozl

+0

Kodunda yanlış bir şey göremiyorum 'Tag =" {x: Statik yerel: ToothVisualModelType.Tooth} "' .. Bu kesinlikle doğru ... –

+0

@AmolBavannavar Bu tam olarak kavga ettiğim şey. Çalışmalı, ama değil. Ve evet her şey aynı isim alanında – mandarin

cevap

2

buldum this okunduktan sonra çözüm. düşündüğüm bu otomatik veya dahili olarak yapıldığını, ama çözüm açıkça şöyle Pencere etiketinde local ad beyan etmek zorunda olmasıdır:

xmlns:local="clr-namespace:Dental_Viewer" 

Sonra bir cazibe gibi <xctk:ColorPicker Tag="{x:Static local:ToothVisualModelType.Tooth}"/> çalışır.

3

deneyin bu ifadeyi kullanmak:

<Control Name="MyControl" 
     Width="100" 
     Height="30"> 

    <Control.Tag> 
     <x:Static Member="local:ToothVisualModelType.Tooth" /> 
    </Control.Tag> 
</Control> 

Yoksa şöyle bir statik sınıf oluşturabilirsiniz: XAML içinde

internal static class ToothVisualModelClass 
{ 
    public static string CoordinateSystemPivot = "0"; 
    public static string Tooth = "1"; 
    // ...etc... 
} 

de bu gibi kullanılabilir:

Tag="{x:Static local:ToothVisualModelClass.Tooth}"