I have model BaseModel
with fields as Id
, Created
, Deleted
and Name
etc.
From this model I have derived models Category
and Brand
. Model Brand
has field Image
.
Also I have class Node
(Title as Name and Value as all object)
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));
}
}
}
I use class Node
for ComboBox
. So I have ComboBox for Category and for Brand. Cause Category and Brand are derived from BaseModel I use for them same class Node
In <ComboBox.ItemTemplate>
I want to display Image
if it exists. So I wrote next code:
<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>
It works, it displays images only for Brand
items, cause only they have Image
.
But in output window I see next message:
System.Windows.Data Error: 40 : BindingExpression path error: 'Image' property not found on 'object' ''Category' (HashCode=56044044)'. BindingExpression:Path=Value.Image.FileLocation; DataItem='Node' (HashCode=65381042); target element is 'Image' (Name='ImageCheckBox'); target property is 'Source' (type 'ImageSource')
As I read before, any exception in Binding can have influence on WPF App performance. How can I solve this issue?