そのためには、値コンバータが必要です。
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;
namespace EdPlunkett
{
public class GreaterThan : MarkupExtension, IValueConverter
{
// The only public constructor is one that requires a double argument.
// Because of that, the XAML editor will put a blue squiggly on it if
// the argument is missing in the XAML.
public GreaterThan(double opnd)
{
Operand = opnd;
}
/// <summary>
/// Converter returns true if value is greater than this.
///
/// Don't let this be public, because it's required to be initialized
/// via the constructor.
/// </summary>
protected double Operand { get; set; }
// When the XAML is parsed, each markup extension is instantiated
// and the parser asks it to provide its value. Here, the value is
// us.
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return System.Convert.ToDouble(value) > Operand;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
そして、ここでは、あなたがそれを使用する方法は次のとおりです:ここでは、あなたが私だったらということ書くかもしれない方法です
<Window
....
xmlns:edp="clr-namespace:EdPlunkett"
....
>
<DataGrid.Resources>
<Style x:Key="DGCellStyle" TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger
Binding="{Binding OperativeCount, Converter={edp:GreaterThan 10}}"
Value="True">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
値コンバータは、非常に多くの場合、リソースとしてインスタンス化されており、それらのパラメータは通常に渡されますConverterParameter
プロパティを使用しますが、MarkupExtension
にすると、XAMLパーサーは引数の型を強制するだけでなく、引数が必要です。これにより、コンバータの邪魔は非常に簡単になります。さらにIntellisenseを入手してください。
あなたはその答えの1つを正しいものとしてチェックしてください。あるいは、何が間違っているのか、それとも欠けているのかを教えてください。これは、私たちにとっても、この質問を見る他のSOユーザにとっても、有益なフィードバックです。 –