、、などのBaseModel
フィールドを持つモデルがあります。Id
Created
Deleted
Name
このモデルから、モデル と を派生さCategory
せBrand
ました。モデルBrand
にはフィールドがありますImage
。
また、クラスがありますNode
(名前としてのタイトルとすべてのオブジェクトとしての値)
public class Node : INotifyPropertyChanged
{
private string _title;
private BaseModelDto _value;
private bool _isSelected;
#region ctor
public Node(string title, BaseModelDto value)
{
Title = title;
Value = value;
}
#endregion
#region Properties
public string Title
{
get { return _title; }
set
{
_title = value;
NotifyPropertyChanged("Title");
}
}
public BaseModelDto Value
{
get { return _value; }
set
{
_value = value;
NotifyPropertyChanged("Value");
}
}
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
NotifyPropertyChanged("IsSelected");
}
}
#endregion
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
のクラスを使用Node
しComboBox
ます。そのため、カテゴリとブランドの ComboBox があります。原因 カテゴリとブランドは、同じクラスに使用する BaseModel から派生していますNode
存在する場合は<ComboBox.ItemTemplate>
表示したい。Image
だから私は次のコードを書きました:
<Image MaxHeight="30" Margin="15,0,0,0" HorizontalAlignment="Right" Name="ImageCheckBox" Grid.Column="1">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="{Binding Value.Image.FileLocation, Converter={StaticResource ImagePathConverter}}" />
</Style>
</Image.Style>
</Image>
それは機能し、Brand
アイテムの画像のみを表示しますImage
。
しかし、出力ウィンドウに次のメッセージが表示されます。
System.Windows.Data エラー: 40: BindingExpression パス エラー: 'Image' プロパティが 'object' ''Category' (HashCode=56044044)' に見つかりません。BindingExpression:Path=Value.Image.FileLocation; DataItem='ノード' (HashCode=65381042); ターゲット要素は 'Image' (Name='ImageCheckBox') です。ターゲット プロパティは 'Source' (タイプ 'ImageSource')
前に読んだように、Binding の例外は WPF アプリのパフォーマンスに影響を与える可能性があります。この問題を解決するにはどうすればよいですか?