1

プロジェクトの GUI を設計しています。私がする必要があるのは、バインディング ソースのブール値に応じてラベルの色を変更することです。しかし問題は、バインディング ソースにないラベルに Color を割り当てる必要があることです (バインディング ソースに Color プロパティは必要ありません)。

bool が true の場合にラベルを赤くするにはどうすればよいですか?

前もって感謝します。

4

4 に答える 4

3

それらを直接バインドすることはできないため、いずれかの側で追加のプロパティを作成する必要があります。(ビジネス)オブジェクトに Color プロパティを追加して(これは不要だと言いました)、(ビジネス)オブジェクトのプロパティにバインドするフォーム/コントロールにプロパティを追加したままにします。

アップデート

バインドできるフォームにプロパティを追加する場合は、次を追加します。

public bool MyPropertyToBindTo {
    get { return _myLabel.Color == Color.Red; }
    set { _myLabel.Color = value ? Color.Red : Color.Black; }
}

これで、business-object-property をこのプロパティにバインドできるようになり、動作するはずです。

于 2012-08-31T13:06:57.287 に答える
2

これには Converter を使用できます。(いくつかのソースからこのコードをコピー/更新しました。構文エラーはご容赦ください。)

public class BoolToColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Color labelColor;
        // Implement your conversion code here ...

        return labelColor;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // As far as I understood your question you
        // will not need to convert back.
        return DependencyProperty.UnsetValue;
    }
}

次に、UserControlまたはパーツの XAML で定義する必要があります(コンバーターは名前空間です)。(この例では、 は が定義されている名前空間にマップされます。)WindowResourcesconverterBoolToColorConverter

<UserControl.Resources>
  <converter:BoolToColorConverter x:Key="boolToColor" />
</UserControl.Resources>

その後、最終的にこのバインディングの XAML で使用できます。

<Label Content="{Binding Path=YourBoundProperty, Converter={StaticResource boolToColor}}" />
于 2012-08-31T13:17:42.773 に答える
1

Wpfを使用する場合は、コンバーターを使用できます

色と値に関するリンク: http://www.c-sharpcorner.com/uploadfile/dpatra/value-converter-in-wpf-part-i/

于 2012-08-31T13:07:04.587 に答える
0

ブールプロパティをコントロールにバインドせず、DataBindingイベントをオーバーライドし、そのイベントハンドラーでブール変数に基づいてのを設定しColorます。Label従来のデータバインディングには複雑すぎるデータバインディングロジックを配置するためのDataBindingイベントが(少なくとも部分的に)存在します。

于 2012-08-31T13:33:34.247 に答える