Как определить DataContext в моем файле ресурсов или под тегом Window.Resource? - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть эта привязка:

<Window x:Name="_local">

    <TextBox x:Name="txtVendorName" DataContext="{Binding ElementName=_this, Path=VendorObject}"  Width="200" Height="50" BorderBrush="Black" Text="{Binding Path=VendorName}" />

, если у меня есть 50 текстовых полей и метка, которую мне нужно связать, нужно ли поместить DataContext для всех ??Я могу централизовать этот DataContext и определить только текст / контент для моих объектов?

Я не хочу определять DatContext для моей таблицы.Итак, как я могу определить DataContext в моем?

<Window.Resources></Window.Resources>

1 Ответ

0 голосов
/ 28 декабря 2011

Если я предполагаю, что ваше фактическое требование верно, то все, что вам нужно, это все 50 меток и текстовых блоков, которые должны быть привязаны к контексту данных, который является VendorObject из _this объекта. Хотя я не мог догадаться, что такое _this объект.

Ну, DataContext - это Inherited Dependency Property (IDP), что они имеют в виду, когда визуальный родительский объект установлен с контекстом данных, его контекст данных получают все дочерние элементы ниже этого визуального элемента.

Таким образом, если вы поместите немного Panel в свое окно и один раз установите его контекст данных с привязкой DataContext="{Binding ElementName=_this, Path=VendorObject}", а затем поместите все эти 50-100 текстовых блоков и меток под этой панелью, они автоматически получат этот объект вендора как контекст данных.

So

  <StackPanel DataContext="{Binding ElementName=_this, Path=VendorObject}">
      <TextBlock Text="{Binding Path=VendorName}" />
      <TextBlock Text="{Binding Path=VendorId}" />
      <TextBlock Text="{Binding Path=VendorLocation}" />
      .... <!--Put all the 50 UI items here to use same data context -->
  </StackPanel>

Надеюсь, я правильно угадал, что тебе нужно.

Теперь отвечаю на следующий вопрос,


Так как я могу определить DataContext в моем?

  <Window.Resources></Window.Resources>

Ты не можешь. Но вы можете создать экземпляр класса VendorObject и предоставить ему ресурс Key, но это просто плохой дизайн.

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