プロジェクトの GUI を設計しています。私がする必要があるのは、バインディング ソースのブール値に応じてラベルの色を変更することです。しかし問題は、バインディング ソースにないラベルに Color を割り当てる必要があることです (バインディング ソースに Color プロパティは必要ありません)。
bool が true の場合にラベルを赤くするにはどうすればよいですか?
前もって感謝します。
プロジェクトの GUI を設計しています。私がする必要があるのは、バインディング ソースのブール値に応じてラベルの色を変更することです。しかし問題は、バインディング ソースにないラベルに Color を割り当てる必要があることです (バインディング ソースに Color プロパティは必要ありません)。
bool が true の場合にラベルを赤くするにはどうすればよいですか?
前もって感謝します。
それらを直接バインドすることはできないため、いずれかの側で追加のプロパティを作成する必要があります。(ビジネス)オブジェクトに Color プロパティを追加して(これは不要だと言いました)、(ビジネス)オブジェクトのプロパティにバインドするフォーム/コントロールにプロパティを追加したままにします。
アップデート
バインドできるフォームにプロパティを追加する場合は、次を追加します。
public bool MyPropertyToBindTo {
get { return _myLabel.Color == Color.Red; }
set { _myLabel.Color = value ? Color.Red : Color.Black; }
}
これで、business-object-property をこのプロパティにバインドできるようになり、動作するはずです。
これには 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 で定義する必要があります(コンバーターは名前空間です)。(この例では、 は が定義されている名前空間にマップされます。)Window
Resources
converter
BoolToColorConverter
<UserControl.Resources>
<converter:BoolToColorConverter x:Key="boolToColor" />
</UserControl.Resources>
その後、最終的にこのバインディングの XAML で使用できます。
<Label Content="{Binding Path=YourBoundProperty, Converter={StaticResource boolToColor}}" />
Wpfを使用する場合は、コンバーターを使用できます
色と値に関するリンク: http://www.c-sharpcorner.com/uploadfile/dpatra/value-converter-in-wpf-part-i/
ブールプロパティをコントロールにバインドせず、DataBinding
イベントをオーバーライドし、そのイベントハンドラーでブール変数に基づいてのを設定しColor
ます。Label
従来のデータバインディングには複雑すぎるデータバインディングロジックを配置するためのDataBinding
イベントが(少なくとも部分的に)存在します。