Я пытаюсь сделать простой привязку OneWay для пользовательского элемента управления, но я честно не понимаю, почему некоторые части не работают. Чтобы быть простым, я создал стандартный UserControl WPF с некоторыми свойствами зависимостей. В моем главном окне я скрываю/показываю UserControl в зависимости от некоторых событий, и я привязываю свойства к моим данным в режиме просмотра главного окна. Тем не менее, это делает НЕ мой обновленный UserControl для некоторых частей. Для exampl, у меня есть свойство зависимостей в SearchString на моем UserControl:Как связать и обновить привязку UserControl в WPF?
public static readonly DependencyProperty SearchStringProperty = DependencyProperty.Register("SearchString",
typeof(string), typeof(DisplayMailView), new UIPropertyMetadata(null));
public string SearchString
{
get { return (string)GetValue(SearchStringProperty); }
set
{
SetValue(SearchStringProperty, value);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SearchString"));
}
var loFinds = richEditControl1.Document.FindAll(SearchString, SearchOptions.WholeWord);
foreach (var find in loFinds)
{
var oDoc = find.BeginUpdateDocument();
var oChars = oDoc.BeginUpdateCharacters(find);
oChars.BackColor = System.Drawing.Color.Yellow;
oDoc.EndUpdateCharacters(oChars);
find.EndUpdateDocument(oDoc);
}
}
}
Это один в UserControl связан с SearchString член моего главного окна ViewModel
<local:DisplayMailView SearchString="{Binding DataContext.SearchString, RelativeSource={RelativeSource AncestorType={x:Type Window}}, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True,NotifyOnTargetUpdated=True,Mode=TwoWay}"/>
На мой ViewModel:
public string SearchString
{
get
{
return _searchString;
}
set
{
_searchString = value;
if (!string.IsNullOrWhiteSpace(value))
DataGridService.FocusFirstRow();
RaisePropertyChanged();
}
}
Я поставил точку останова в набор моей SearchString в моей главной видовой схеме окна, значение установлено. Однако, когда я помещаю точку останова в набор моего SearchString в UserControl, он никогда не срабатывает?
Кроме того, DataContext моего UserControl установлено:
(this.Content as FrameworkElement).DataContext = this;
Я точен, что мой UserControl конструктор вызывается только один раз при запуске, другие вещи, которые должны быть динамически обновлять в зависимости от действий пользователя.
Есть ли у кого-то идеи? У меня нет ошибок в окне вывода Спасибо
Благодарим Вас за это! – cdie
Добро пожаловать! – almulo