WPF: Не удалось привязать к преобразованному объекту! - PullRequest
0 голосов
/ 26 мая 2010

Возможно, название было не совсем точным, поскольку я не уверен, как его описать.

У меня есть пользовательский элемент управления с именем 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.

1 Ответ

0 голосов
/ 26 мая 2010

Контекст данных NSLTextBlock по какой-то причине не установлен на экземпляр DataField. Добавьте обработчик событий для OnDataContextChanged и с помощью отладчика проверьте, что происходит. Может быть, это ваш DataFieldConverter, который выходит из строя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...