2015-01-14 12 views
8

件名に関するいくつかの質問を読みましたが、答えは私のためには機能しません。 私はStlContainer.csで宣言されている以下の列挙型があります。グローバルenumをXAMLのタグ値として割り当てる方法は?

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

を列挙は、それグローバル列挙型になりStlContainerクラス定義の外で宣言されています。私は、メインウィンドウに列挙型を移動しようとした

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

:私は別のXAMLコントロールのTagプロパティにその値を代入したいので、私はこのようにそれを実行しようとしました:

<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> 

しかし、エラーが発生しました.xaml.cs、私は

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

Tag="{x:Static MyNamespace:ToothVisualModelType.Tooth}" 
012を試してみました

これをLabelコントロールのタグに割り当てようとしましたが、同じエラーが発生しました。私はここで何が欠けていますか?これを回避するためにバインディングを使用することはできますか?

PS:値を入力してTag="{x:Static }"になると、オートコンプリートではそれを完了するためのメンバパラメータのみが提案されます。Tag="{x:Static Member=}"でも重要です。

+0

XAMLで 'local'名前空間をどのように定義しますか?その名前空間に 'ToothVisualModelType'がありますか? – dkozl

+0

あなたのコードに何も間違っているとは見えません。Tag = "{x:Static local:ToothVisualModelType.Tooth}" .. ..これは絶対に正しいです... –

+0

@AmolBavannavarこれはまさに私が戦っていることです。それはうまくいくはずですが、そうではありません。そして、すべてが同じ名前空間にあります – mandarin

答えて

2

を私が見つけました読んだ後の解答this。 は、私は、これは自動的に、または内部的に行われていたと思ったが、解決策は、私は明示的にそうようにWindowタグにlocal名前空間を宣言しなければならないということである。魅力のような

xmlns:local="clr-namespace:Dental_Viewer" 

その後<xctk:ColorPicker Tag="{x:Static local:ToothVisualModelType.Tooth}"/>作品。

3

この表現を使用してみてください:

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

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

かそこらのような静的なクラスを作成することができますXAMLで

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

もこのように使用:

Tag="{x:Static local:ToothVisualModelClass.Tooth}" 
関連する問題