Я использую OSX 10.6 с предустановленным python 2.6 и хочу установить пакеты python через easy_install или setup.py (в загруженном пакете). В моем случае я пытаюсь установить MySQLdb. В обоих случаях я получаю трассировку стека, которая заканчивается так:
...
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/command/easy_install.py", line 21, in
from setuptools.package_index import PackageIndex, parse_bdist_wininst
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/package_index.py", line 2, in
import sys, os.path, re, urlparse, urllib2, shutil, random, socket, cStringIO
File "/System/Library/Frameworks/Python/framework/Versions/2.6/lib/python2.6/urllib2.py", line 111, in
from urllib import (unwrap, unquote, splittype, splithost, quote,
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1335, in
from _scproxy import _get_proxy_settings, _get_proxies
ImportError: No module named _scproxy
Установка python представляет собой неизмененную предустановленную версию 2.6.1, за исключением того, что я добавил исходные файлы в папку lib. Файл "find / System / Library / Frameworks / Python. RadChart.SeriesMapping ....
Я пытаюсь привязать динамическое поведение к визуальному элементу вне логических и визуальных деревьев WPF.
Моя проблема в том, что цвет графика RadChart задан в (квазипуть): RadChart.SeriesMapping.LineSeriesDefinition.Appearance.Stroke
Изначально я хотел привязать это к свойству контекста данных диаграммы в XAML. Наивно, я просто написал обычную {Binding PlotBrush}
, что компилятор возвращал ошибку «Не удается найти управляющий элемент FrameWorkelement». После прочтения я считаю, что это означает, что разрешение контекста данных вверх по иерархии не сработало. Потому что его предки (говоря XAML) имеют типы, отличные от FrameWorkElement, и другие отношения, отличные от содержимого элемента управления содержимым. По крайней мере, так я понимаю это сейчас. Пожалуйста, поправьте меня.
Итак, я нашел "DataContext Bridge" http://www.codeproject.com/KB/WPF/AttachingVirtualBranches.aspx
Проще говоря, это говорит о том, что вы связываете свойство datacontext элемента структуры, которому во время выполнения назначен текст (не любой из тех, кто его наследует) от до контекста данных экземпляра FrameWorkElement в ресурсах . Затем тот же экземпляр объекта ресурса используется для привязки к свойству datacontext «ветви», которую вы хотите «присоединить» к динамическому наследованию DataContext. Но автор статьи имел возможность реализовать правило проверки потребителя наблюдаемого свойства. SolidColorBrush запечатан, и я полагаю, что реализовать полную кисть, даже с использованием декоратора, потребует немало усилий.
В моем случае, это не помогает мне делать то, что я хочу, но я «так близок». Так что мне интересно, есть ли какие-нибудь уловки XAML, которые могут мне помочь.
Однако неясно, как я это использую. Нет объекта, для которого должен быть установлен текст данных. AppearanceSettings не является элементом FrameWorkElement.
Ok, how do I use the fact that I can access the datacontext here?
Итак, следующим шагом было то, что я мог каким-то образом напрямую получить объект кисти. Я экспериментировал с такими вещами, просто возился:
.cs:
public class ObservableBrush : FrameworkElement
{
public Brush Brush
{
get { return (Brush) GetValue(BrushProperty); }
set { SetValue(BrushProperty, value); }
}
public static readonly DependencyProperty BrushProperty =
DependencyProperty.Register("Brush", typeof (Brush), typeof (ObservableBrush), new UIPropertyMetadata(new SolidColorBrush(Colors.Black)));
}
Начало XAML:
Встроенный XAML:
«Связывание» не является элементом инфраструктуры, а «Источник» не является свойством зависимости, либо, так что среда выполнения, конечно, жалуется. Я знаю, что свойство Brush никогда не вернет ничего, кроме значения по умолчанию, указанного в регистрации свойства зависимости.
Я как бы второй день собираюсь заняться этой проблемой. * Сделайте ObservableBrush настоящей кистью. Затем программно установите его (вместо этого эффективно используя стандартную привязку динамических ресурсов). Мне это не нравится. Я хотел заставить работать привязку данных. * Соедините BRUSH вместо DATACONTEXT.
XAML-часть этого работает нормально:
Но опять же, как привязать Brush к свойству DataContext? Есть ли какое-то переопределение, которое я могу использовать в ObservableBrush, чтобы заставить Brush динамически следовать за элементом в тексте данных?
Как насчет создания поддельного визуального элемента в дереве, а затем связать с ним ДВЕ привязки?
И это как-нибудь «свяжет» две привязки?
Или есть какой-то (не) официальный «вспомогательный класс» для этого типа функциональности?
Или я лаяю не на то дерево, и (намного) лучше решить эту проблему в коде программной части посредством динамической привязки ресурсов ?
Есть какие-нибудь мысли или наблюдения о том, что делать дальше? За исключением моей очевидной саморазрушительности из-за того, что я настаивал на привязке данных, когда динамические ресурсы должны решать эту проблему.