Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Casper-SC
Эксперт .NET
4082 / 1934 / 377
Регистрация: 27.03.2010
Сообщений: 5,322
Записей в блоге: 1
1

Передать внутри Binding в ConverterParameter ссылку на окно содержащее объект, который использует Binding

01.07.2014, 13:44. Просмотров 1368. Ответов 2
Метки нет (Все метки)

В главном окне в ресурсах есть Контекстные меню. У программы есть "Ручной режим", если режим тру. то подставить одно контекстное меню. если фолс, то другое. Вот для этого я хотел сделать так:

XML
1
2
3
4
5
6
7
8
9
10
11
12
<polygonType2:SignalButton Width="40"
        Height="40"
        ContextMenu="{Binding Main.IsManualModeEnabled,
                              Source={StaticResource Locator},
                              Converter={StaticResource ManualModeToContextMenuConverterKey}}"
        DataContext="{Binding Main.Something.SomeButton,
                              Source={StaticResource Locator}}"
        ForegroundImage="{Binding CurrentIcon,
                                  UpdateSourceTrigger=PropertyChanged}"
                                
        Signal="{Binding Signal}"
        Style="{StaticResource SignalPloygonButtonStyle}" />
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public class ManualModeToContextMenuConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ((bool) value) //если ручной режим
            {
                return null;
            }
            else //иначе, если автоматический
            {
                return null;
            }
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
           return null;
        }
    }
Внутри конвертера хочу из ресурсов окна получить нужное меню и его вернуть.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2014, 13:44
Ответы с готовыми решениями:

TreeView Binding выделенный объект
Вопрос по Binding Есть TreeView надо выделенный элемент связать с Name пробовал так не прокатило ...

Binding к индексу внутри коллекции
Доброго времени суток. Вопрос: У нас имеется коллекция неких объектов. У каждого объекта имеется...

Передать параметр через Binding
На кнопке записан контент единица, как передать, что кнопка с единицей и передать единицу через...

WPF - Binding ContextMenu commands внутри DataTemplate
Добрый день, пытаюсь создать TabControl с разными ContextMenu в зависимости от элемента вызова....

Можно ли использовать объект Binding для загрузки картинки?
Можно ли использовать объект Binding для загрузки картинки, задавая директорию Source из элемента...

2
Spawn
975 / 873 / 353
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
01.07.2014, 13:56 2
А зачем в CodeBehind?

Добавлено через 47 секунд
Вообще, если там целые менюшки, то так делать не советуется... Элементы управления в ресурсах держать неправильно.
0
Casper-SC
Эксперт .NET
4082 / 1934 / 377
Регистрация: 27.03.2010
Сообщений: 5,322
Записей в блоге: 1
01.07.2014, 18:24  [ТС] 3
Цитата Сообщение от Spawn Посмотреть сообщение
Вообще, если там целые менюшки, то так делать не советуется... Элементы управления в ресурсах держать неправильно.
есть много однотипных кнопок и для каждой подходит одно меню и один обработчик. Плодить менюшки тоже врятли хорошая идея, потом в случае мелкого изменения устанешь всё править. у меня так сделано:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    <!--  Контекстное меню Кнопки #$%#@Q@-->
    <ContextMenu x:Key="ContextMenuUnloadButtonKey"
                 Tag="{Binding RelativeSource={RelativeSource FindAncestor,
                                                              AncestorType={x:Type polygonType2:SignalButton}}}">
      <MenuItem Command="{Binding CommonCommands.UnloadButtonModeChangeForDoserCommand,
                                  Source={StaticResource Locator}}"
                CommandParameter="{Binding PlacementTarget.DataContext,
                                           ConverterParameter=BlaBlaBla1,
                                           Converter={StaticResource UnloadButtonPartsToTupleWithParamConverterKey},
                                           RelativeSource={RelativeSource FindAncestor,
                                                                          AncestorType={x:Type ContextMenu}}}"
                Header="Что-то там 1"
                IsChecked="{Binding PlacementTarget.DataContext.Mode,
                                    ConverterParameter=BlaBlaBla1,
                                    Converter={StaticResource UnloadButtonModeToBoolByParameterConverterKey},
                                    RelativeSource={RelativeSource FindAncestor,
                                                                   AncestorType={x:Type ContextMenu}}}" />
 
      <MenuItem Command="{Binding CommonCommands.UnloadButtonModeChangeForDoserCommand,
                                  Source={StaticResource Locator}}"
                CommandParameter="{Binding PlacementTarget.DataContext,
                                           ConverterParameter=BlaBlaBla2,
                                           Converter={StaticResource UnloadButtonPartsToTupleWithParamConverterKey},
                                           RelativeSource={RelativeSource FindAncestor,
                                                                          AncestorType={x:Type ContextMenu}}}"
                Header="Что-то там 2"
                IsChecked="{Binding PlacementTarget.DataContext.Mode,
                                    ConverterParameter=BlaBlaBla2,
                                    Converter={StaticResource UnloadButtonModeToBoolByParameterConverterKey},
                                    RelativeSource={RelativeSource FindAncestor,
                                                                   AncestorType={x:Type ContextMenu}}}" />
 
      <MenuItem Command="{Binding CommonCommands.UnloadButtonModeChangeForDoserCommand,
                                  Source={StaticResource Locator}}"
                CommandParameter="{Binding PlacementTarget.DataContext,
                                           ConverterParameter=BlaBlaBla3,
                                           Converter={StaticResource UnloadButtonPartsToTupleWithParamConverterKey},
                                           RelativeSource={RelativeSource FindAncestor,
                                                                          AncestorType={x:Type ContextMenu}}}"
                Header="Что-то там 3"
                IsChecked="{Binding PlacementTarget.DataContext.Mode,
                                    ConverterParameter=BlaBlaBla3,
                                    Converter={StaticResource UnloadButtonModeToBoolByParameterConverterKey},
                                    RelativeSource={RelativeSource FindAncestor,
                                                                   AncestorType={x:Type ContextMenu}}}" />
 
    </ContextMenu>
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 18:24

Binding и обычный текст внутри одного элемента TextBlock
Привет всем, изучаю UWP, разметка там по сути производится на XAML, и возникла ситуация: есть...

Передать значение в Binding progressbar, находящегося в другой форме
Можно ли из метода передавать значение в Binding progressbar(находящегося в другой форме). Если...

Не отображается контент у RibbonButton, который задан через Binding
Уже задавал этот вопрос, но ответов не получил, возможно вопрос просто затерялся в списке более...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.