Возможно, название было не совсем точным, поскольку я не уверен, как его описать.
У меня есть пользовательский элемент управления с именем NSLTextBlock, ниже приведено определение NSLTextBlock :
public partial class NSLTextBlock: UserControl
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
public object HighlightMatchCase
{
get { return GetValue(HighlightMatchCaseProperty); }
set
{
SetValue(HighlightMatchCaseProperty, value);
}
}
public static readonly DependencyProperty HighlightMatchCaseProperty =
DependencyProperty.Register(
"HighlightMatchCase",
typeof(object),
typeof(NSLTextBlock),
new PropertyMetadata(null, new PropertyChangedCallback(HighlightChangedCallback)));
public NSLTextBlock()
{
InitializeComponent();
}
}
}
И HighlightMatchCase является свойством зависимости.
Вид хоста, подобный следующему:
<ListView Name ="LogDataList" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding LogDataCollection}" Background="Cyan">
<ListView.View>
<GridView AllowsColumnReorder="true"
ColumnHeaderToolTip="Event Log Information">
<GridViewColumn Header="Event Log Name" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<l:NSLTextBlock Height="25" DataContext="{Binding LogName, Converter={StaticResource DataFieldConverter}}" HighlightMatchCase="{Binding Element}" Loaded="EditBox_Loaded"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Creator" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<l:NSLTextBlock Height="25" DataContext="{Binding CreatorName, Converter={StaticResource DataFieldConverter}}" HighlightMatchCase="{Binding Element}" Loaded="EditBox_Loaded"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Message" Width="100" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<l:NSLTextBlock Height="25" DataContext="{Binding Message, Converter={StaticResource DataFieldConverter}}" HighlightMatchCase="{Binding Element}" Loaded="EditBox_Loaded"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
DataField:
public class DataField : INotifyPropertyChanged
{
private HighlightElement element;
public HighlightElement Element
{
get
{ return element; }
set
{
element = value;
OnPropertyChanged("Element");
}
}
}
На самом деле я хочу преобразовать строку (например, LogName, CreatorName и Message) вDataField и привязка моего собственного свойства ( HighlightMatchCase ) к Элемент (преобразованный текст данных).Когда я связываю его с Элементом, он генерирует исключение BindingExpressionException, не может найти свойство «Элемент» для объекта.
Как я могу решить это?Каково ваше предложение?
Я действительно ценю.On line'in.