Привязка данных к UserControl в WPF

Вот как вы можете это сделать.

document.getElementById('ifrmMsg').contentWindow.$('a:first').trigger('click');

Для этой цели вы также можете использовать postMessage() . Он также будет работать с перекрестным доменом. Однако JS внутри iframe должен прослушивать событие message, т. Е. Вам нужно управлять источником iframe.

11
задан Arcturus 10 January 2019 в 14:54
поделиться

3 ответа

Вы устанавливаете DataContext в элементе управления на себя, тем самым перезаписывая DataContext при использовании этого элемента управления в других элементах управления. Если взять в качестве примера вашу привязку в вашей ситуации:

<src:BlueTextBox BlueText="{Binding Path=MyString}" /> 

После загрузки и установки всех Datacontext, он будет искать путь MyString в вашем элементе управления BlueTextBox из-за того, что вы установили DataContext для него. Я думаю, что вы не так это задумали ;).

Решение:

Измените привязку текста на одну из 2 привязок:

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type src:BlueTextBox}}, Path=BlueText}

или

Назовите ваш элемент управления Root (или что-то вроде этого)

<UserControl x:Name="Root"

{Binding ElementName=Root, Path=BlueText}

И уберите

DataContext = this;

из конструктора вашего UserControl и он должен работать как шарм....

13
ответ дан 3 December 2019 в 08:02
поделиться

Я думаю, в этом случае вам нужно установить свойство ElementName в привязке. Что-то вроде этого:

<UserControl x:Class="Binding2.BlueTextBox" x:Name="blueTextBox"...
<Grid>
    <TextBox x:Name="myTextBox" Text="{Binding ElementName=blueTextBox, Path=BlueText}" Foreground="Blue" Width="100" Height="26" />
</Grid>
2
ответ дан 3 December 2019 в 08:02
поделиться

Возможно, вам нужно добавить свойство FrameworkPropertyMetadata, где указать FrameworkPropertyMetadataOptions.AffectsRender и AffectsMeasure.

FrameworkPropertyMetadataOptions enumeration MSDN article

0
ответ дан 3 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: