Как привязаться к двум разным контекстамC#

Место общения программистов C#
Ответить
Anonymous
 Как привязаться к двум разным контекстам

Сообщение Anonymous »

У меня есть UserControl, xaml которого выглядит примерно так:

Код: Выделить всё

OptionalReferenceBlock
определяет два свойства: значение; и ссылки, которые представляют собой список необязательных ссылок. Дополнительная ссылка содержит (среди прочего) свойство Partial Partial. Вот так:

Код: Выделить всё

public class OptionalReference {
public Partial partial { get; init; }
}

public sealed partial class OptionalReferenceBlock : UserControl {

public OptionalReferenceBlock() {
this.InitializeComponent();
}

IEnumerable references {
get => (IEnumerable)GetValue(referencesProperty);
set => SetValue(referencesProperty, value);
}

public static DependencyProperty referencesProperty = DependencyProperty.Register(
nameof(references),
typeof(IEnumerable),
typeof(OptionalReferenceBlock),
new PropertyMetadata(null)
);

IVisibleDataType value {
get => (IVisibleDataType)GetValue(valueProperty);
set => SetValue(valueProperty, value);
}

public static DependencyProperty valueProperty = DependencyProperty.Register(
nameof(value),
typeof(object),
typeof(OptionalReferenceBlock),
new PropertyMetadata(null)
);

}
Просто чтобы прояснить это: список необязательных ссылок и отдельные дополнительные ссылки сами по себе устанавливаются только один раз, но значение неоднократно изменялся (это отображается внутри DataGrid: необязательные ссылки в конечном итоге определяются столбцом, но значение постоянно перенастраивается).
TableView Элемент управления имеет свойство tableProvider, тип которого — TableProvider. Ни частичный, ни value не относятся к этому типу, но частичный.with(value) есть. Тогда у меня вопрос: что мне нужно привязать к свойству tableProvider, чтобы это работало?
Я пробовал что-то вроде x:Bind частичного .with(value), но это не работает, поскольку частичное и значение взяты из двух разных контекстов данных, и я не понимаю, как ссылаться на них одновременно время.
Я пытался создать преобразователь значений, вот так: а затем x:Bind parts Converter={StaticResource PartialConverter, но это не работает, потому что (насколько я могу судить) невозможно предоставить преобразователь значений со связанным свойством (вы можете определить его, но ошибки во время выполнения: см. здесь.
MultiBindings может решить эту проблему, но не в Winui 3.
Есть ли какой-то синтаксис, который мне не хватает, или то, что я пытаюсь сделать, в корне ошибочно?


Подробнее здесь: https://stackoverflow.com/questions/790 ... t-contexts
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»