Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2011, 21:01   #1
DmitriyS
 
Регистрация: 09.07.2011
Сообщений: 7
По умолчанию Создание ссылки из кода в XAML

Имем: некоторое окно с DataGrid или ListView (не особо важно). При двойном щелчке на одной из строк, вызывается редактор содержимого этой строки, т.е. открывается диалог для правки данных(на это есть причины). При этом, в основном окне, имеем ObjectDataProvider src из которого поступают данные в DataGrid(ListView).
Требуется: Передать src в конструктор редактора содержимого, ибо src настроен определенным образом и делать его клоны или копии - не желательно. Таким образом передать ссылку на данные в окно редактора до привязки данных к визуальным элементам самого редактора.

XAML основного окна (укорочено)
Код:
<Window.Resources>
        <ObjectDataProvider x:Key="resMatDataProvider" ObjectType="{x:Type l:MaterialDataProvider}"/>
        <ObjectDataProvider x:Key="resMaterialData" ObjectInstance="{StaticResource resMatDataProvider}" MethodName="GetMaterials"/>
</Window.Resources>
<wpf:DataGrid  Name="table" CanUserAddRows="False"
                CanUserDeleteRows="False"
                CanUserReorderColumns="False"
                CanUserResizeRows="False"
                AutoGenerateColumns="False"
                IsReadOnly="True"
                MouseDoubleClick="table_OnEdit"
                ItemsSource="{Binding Source={StaticResource resMaterialData}}"/>
Обработчик события основного окна
Код:
private void table_OnEdit(object sender, MouseButtonEventArgs e)
{
            MaterialEdit ed = new MaterialEdit(provider);
            ed.DataContext = table.SelectedItem;
            ed.Owner = this;
            ed.ShowDialog();
}
XAML редактора
Код:
<Window.Resources>
            <!-- Это делать нельзя -->
            <!-- ObjectDataProvider x:Key="resDataProvider" ObjectType="{x:Type lx:MaterialDataProvider}"/-->

            <! -- Это нужно, ибо в resDataProvider имеется починенные данные -->
            <ObjectDataProvider x:Key="resMatWidthData" ObjectInstance="{StaticResource resDataProvider}" MethodName="GetMatWidths" />
</Window.Resources>
<!-- Далее, поэлементный биндинг с выборкой подчиненных данных -->
Этот код не работает!!
Код:
public MaterialEdit(MaterialDataProvider provider)
{
    this.provider = provider;
    Resources.Add("resDataProvider", provider);
    // следующая функция, зачемто, вызывает Resources.Clear()
    InitializeComponent();
}
DmitriyS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание внутренней ссылки, Action Script, Adobe flash cs 3 Maycal JavaScript, Ajax 1 28.03.2011 15:51
Создание динамической ссылки. waterya Работа с сетью в Delphi 2 16.06.2010 12:57
Создание ссылки в XSL документе hyperworker HTML и CSS 1 29.05.2008 18:33
создание автоматически обновляемой ссылки Ezzzquire Microsoft Office Excel 1 28.01.2008 07:46
Как выдрать из HTML кода ссылки? Vit2 Общие вопросы Delphi 1 24.04.2007 23:09