Выставочные данные WPF нескольких DataContexts в ToolTip ItemsControl

Я нашел, что сессии очень полезны, но несколько вещей отметить:

1), Что PHP может сохранить Ваши сессии в tmp папке или другом каталоге, который может быть доступен для других пользователей на Вашем сервере. Можно измениться, каталог были сессии, хранятся путем движения в файл php.ini.

2), Если Вы настраиваете высокую систему ценностей, которой нужны очень строгие меры безопасности, Вы могли бы хотеть зашифровать данные перед отправкой его в сессию, и дешифруют его для использования его.Примечание: это могло бы создать слишком много служебное в зависимости от Вашего трафика / мощность сервера.

3) я нашел это session_destroy (); doesn’t удаляют сессию сразу же, все еще необходимо ожидать сборщика "мусора" PHP для чистки сессий. Можно изменить частоту, что сборщик "мусора" запущен в файле php.ini. Но все еще doesn’t, кажутся очень надежными, больше информации http://www.captain.at/howto-php-sessions.php

7
задан David Chandler 1 December 2009 в 12:06
поделиться

4 ответа

После часа вытаскивания волос я пришел к убеждению, что вы не можете ссылаться на другой DataContext внутри DataTemplate для всплывающей подсказки . Для других привязок это вполне возможно, как показали другие плакаты. Вот почему вы также не можете использовать трюк RelativeSource. Что вы можете сделать, так это реализовать статическое свойство в своем классе Item и ссылку , которая :

<Window x:Class="ToolTipSpike.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    Name="Root"
    xmlns:ToolTipSpike="clr-namespace:ToolTipSpike">
    <Grid>
        <ItemsControl x:Name="itemsControl" ItemsSource="{Binding Items}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding ItemName}"> 
                        <TextBlock.ToolTip>
                            <ToolTip>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Text="{Binding ItemDescription}" />
                                    <TextBlock Grid.Row="1" 
                   Text="{Binding Source={x:Static ToolTipSpike:Item.GlobalText},
                   Path=.}"
                                    />
                                </Grid>
                            </ToolTip>
                        </TextBlock.ToolTip>
                    </TextBlock>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</Window>

using System.Collections.Generic;
using System.Windows;

namespace ToolTipSpike
{
    public partial class Window1 : Window
    {

        public List<Item> Items { get; private set; }
        public Window1()
        {
            InitializeComponent();
            var itemList = new List<Item>
                  {
                      new Item { ItemName = "First Item", ItemDescription = "This is the first item." },
                      new Item { ItemName = "Second Item", ItemDescription = "This is the second item." }
                  };
            this.Items = itemList;
            this.DataContext = this;
       }
    }

     public class Item
     {
         static Item()
         {
             GlobalText = "Additional Text";
         }
         public static string GlobalText { get; set; }
         public string ItemName{ get; set;}
         public string ItemDescription{ get; set;}
     }
}
3
ответ дан 7 December 2019 в 07:46
поделиться

Вторая попытка

Хорошо, привязка относительного источника не работает в этом случае . На самом деле он работает на основе шаблона данных, вы можете найти множество примеров этого в Интернете. Но здесь (вы были правы, Дэвид, в своем комментарии) ToolTip - это особый зверь, который неправильно размещен в VisualTree (это свойство, а не элемент управления как таковой), и у него нет доступа к области правильного имени для используйте относительную привязку.

После некоторого дополнительного поиска я нашел эту статью , в которой подробно описывается этот эффект и предлагается реализация BindableToolTip.

Это может быть излишним, потому что у вас есть другие варианты - например, использование статического свойства в классе (как в ответе Dabblernl) или добавление нового свойства экземпляра к вашему Item .

Первая попытка: )

Вам следует проконсультироваться с типами привязки относительного источника (например, в этой шпаргалке ):

Таким образом, ваша привязка будет выглядеть примерно так:

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path= GlobalText}
1
ответ дан 7 December 2019 в 07:46
поделиться

Почти правильный Якодер, и угадали неверный путь, Dabblernl;)

Ваш образ мышления правильный, и можно ссылаться на DataContext вашего ItemsControl

Вам не хватает DataContext свойство в пути:

{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.GlobalText}

Вторая попытка;)

http://blogs.msdn.com/tom_mathews/archive/2006/11/06/binding-a-tooltip-in-xaml.aspx

Вот статья с той же проблемой. Они могут ссылаться на DataContext своего родительского элемента управления с помощью свойства PlacementTarget:

<ToolTip DataContext=”{Binding RelativeSource={RelativeSource Self},Path=PlacementTarget.Parent}”>

Если вы поместите DataContext на более глубокий уровень, вы избежите изменения своего Item DataContext

Второе предложение (Нил и Адам Смит) заключалось в том, что мы могли используйте PlacementTarget в привязке. Это хорошо, поскольку я фактически наследую DataContext уже со страницы, на которой размещен DataControl, и это позволит ToolTip получить доступ к исходному элементу управления. Однако, как заметил Адам, вы должны знать о структуре родитель / потомок в разметке:

1
ответ дан 7 December 2019 в 07:46
поделиться

Это случай, когда я думаю, что концептуально более уместно делать это в модели взгляда, чем в модели взгляда в любом случае. Выставьте информацию во всплывающей подсказке на вид как свойство элемента модели представления. Это позволяет представлению делать то, в чем оно хорош (представление свойств элемента), а модели представления делать то, в чем оно хорош (решение о том, какая информация должна быть представлена).

1
ответ дан 7 December 2019 в 07:46
поделиться
Другие вопросы по тегам:

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