-1
したがって、ネストされたクラスのプロパティへのパスを設定できないため、データトリガの問題が発生しています。パスにネストされたクラスのプロパティを与えるには?
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}, Path=Item.ColWarning.HasWarning, UpdateSourceTrigger=PropertyChanged}" Value="True">
そして、ここで私がアクセスしようとしているプロパティです::これは私のトリガーは、現在のように見えるものである。この場合
public class Column {
public Warning ColWarning = new Warning();
//other stuff happens in this class
public class Warning : BaseModel
{
private const string ChangedLength = "Column length will also be changed in tables: ";
public bool HasWarning { get { return _warning == null ? false : true; } }
private string _warning;
public string WarningMessage { get { return _warning; } }
public void ValidateCol(Column col)
{
_warning = "something";
NotifyPropertyChanged("HasWarning");
//actual validation stuff happens here
}
}
}
、WPFのパス内のアイテムは、列を参照します。また、私は警告クラスを取り除き、列クラスのプロパティを含める場合、正しく動作することを知っています。この場合、私のパスはItem.HasWarningに変わり、動作します。この問題で光が出てきたら、私はそれを感謝します!
public Warning ColWarning = new Warning();
Binding
は、プロパティだけに、フィールドにバインドしません。問題はColWarning
がフィールドではなく、財産であるということであるように
'ColWarning'はフィールドです。 {get; set;}でそれをプロパティにして、それがうまく動作するかどうか確認してください。フィールドにはバインドできず、プロパティにのみバインドできます。また、INotifyPropertyChangedを実装していないため、コントロールが入力された後に変更が表示されません。 –
ありがとう、私はそれを試みます。また、コードにNotifyPropertyChangedを含めるのを忘れましたが、私はそれを私のソリューションに実装しました。 –
クール、あなただけのプロパティで良いはずです。 –