2017-06-16 14 views
0

いくつかの可用性プロパティを確認する必要のある小さなアプリケーションを開発しています。私はユーザーインターフェイスWPFのために使用しています。コンボボックスから選択した場合、いくつかの前景色を変更する必要があります。私はこれのDataTemplateを持っている:ブール値コンバータのWPFでの複数バインディング

<DataTemplate x:Key="userTemplate"> 
<TextBlock VerticalAlignment="Center"> 
    <Image Source="imgsource.png" Height="25" Width="25" /> 
    <Run Text="{Binding BooleanObjectName}" Foreground="{Binding boolobject, Converter={StaticResource convAvailability}}"/> 
</TextBlock> 

だから私はこのconvertionためにフォアグラウンドに色を設定しますIValueConverter使用しています。なぜなら、私には、これと間違っている何

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    BooleanObject boolobject = (BooleanObject)value; 
    if (boolobject.IsBoolValueOne) return System.Drawing.Brushes.Green; 
    else if (boolobject.IsBoolValueTwo) return System.Drawing.Brushes.Red; 
    else if (boolobject.IsBoolValueThree) return (SolidColorBrush)(new BrushConverter().ConvertFrom("#d3d300")); 
    else return System.Drawing.Brushes.Black; 
} 

を私はいつも黒い色をしています。これについての考えは?

ご協力いただければ幸いです。 ありがとうございます。

+1

あなたは[ブラシ]を必要とする(https://msdn.microsoft.com/en-us /library/system.windows.media.brushes(v=vs.110).aspx)をWPFプロジェクトの 'System.Windows.Media'名前空間から削除すると、' System.Drawing'名前空間はWinForms用です。 – Funk

+0

Convertメソッドが呼び出されますか? – mm8

+0

@ mm8デバッグしようとしました。 – R3muSGFX

答えて

1

@Funkで指摘されているように、間違った種類のブラシを返します。あなたはSystem.Windows.Media.Brushオブジェクトを返す必要があります。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    BooleanObject boolobject = (BooleanObject)value; 
    if (boolobject.IsBoolValueOne) 
     return System.Windows.Media.Brushes.Green; 
    else if (boolobject.IsBoolValueTwo) 
     return System.Windows.Media.Brushes.Red; 
    else if (boolobject.IsBoolValueThree) 
     return (SolidColorBrush)(new BrushConverter().ConvertFrom("#d3d300")); 

    return System.Windows.Media.Brushes.Black; 
} 

その後、それはあなたのboolobject財産への結合が実際に動作することを提供動作するはずです。さもなければあなたのコンバーターは全く呼び出されません。 「」あなたがオブジェクト自体にバインドしたい場合は、のパスを指定する必要があり

<TextBlock VerticalAlignment="Center"> 
    <Image Source="imgsource.png" Height="25" Width="25" /> 
    <Run Text="{Binding BooleanObjectName}" Foreground="{Binding Path=., Converter={StaticResource convAvailability}}"/> 
</TextBlock> 
+0

気にしないでください。私のコードがComboBoxItem.IsSelected値を正しく設定しなかったため、この問題を解決しました。 – R3muSGFX

+0

"コンボボックスの項目が緑色に選択されました"。他の誰もあなたがそれが何を意味するのか知っているはずです。 Convertメソッドにブレークポイントを設定しましたか? IsBoolValueOne、IsBoolValueTwo、およびIsBoolValueThreeプロパティは何を返しますか?おそらく間違っている。 – mm8

+0

ありがとうございました! – R3muSGFX

関連する問題