Доступ к ResourceDictionary от WPF UserControl

Просто играть; Вот алгоритмический метод для нахождения минимального и максимального положительного числа с плавающей точкой, мы надеемся, что в любой реализации на Python, где float("+inf") приемлемо:

def find_float_limits():
    """Return a tuple of min, max positive numbers
    representable by the platform's float"""

    # first, make sure a float's a float
    if 1.0/10*10 == 10.0:
        raise RuntimeError("Your platform's floats aren't")

    minimum= maximum= 1.0
    infinity= float("+inf")

    # first find minimum
    last_minimum= 2*minimum
    while last_minimum > minimum > 0:
        last_minimum= minimum
        minimum*= 0.5

    # now find maximum
    operands= []
    while maximum < infinity:
        operands.append(maximum)
        try:
            maximum*= 2
        except OverflowError:
            break
    last_maximum= maximum= 0
    while operands and maximum < infinity:
        last_maximum= maximum
        maximum+= operands.pop()

    return last_minimum, last_maximum

if __name__ == "__main__":
    print (find_float_limits()) # python 2 and 3 friendly

В моем случае

$ python so1835787.py
(4.9406564584124654e-324, 1.7976931348623157e+308)

, так что денормали используются.

7
задан 2 June 2009 в 18:20
поделиться

3 ответа

Чтобы получить доступ к одному из ресурсов XAML UserControl в выделенном коде, все, что вам нужно сделать, это получить доступ к свойству Resources элемента UserControl. Примерно так:

BitmapImage myImage = (BitmapImage)this.Resources["imageDefault"];

Тем не менее, предпочтительным методом является использование FindResource (), который будет искать совпадение с ключом по всему логическому дереву, а не только по объекту, для которого он вызывается.

BitmapImage myImage = (BitmapImage)this.FindResource("imageDefault");
7
ответ дан 7 December 2019 в 05:27
поделиться

Итак, у вас есть ResourceDictionary, определенный в сборке UserControl, и вы хотите получить к нему доступ из кода программной части этого UserControl?

Вы должны уметь. Однако, если указанный вами код находится в конструкторе, у вас может не быть доступа к словарю ресурсов (возможно, он еще не загружен). Попробуйте добавить тот же код в событие «загружено» вашего UserControl и посмотрите, работает ли это. Если вы просто пытаетесь получить доступ к ресурсу, например к стилю или шаблону, с помощью функций « FindResource » или « TryFindResource » непосредственно из вашего класса также должны работать (т. Е. вам не обязательно иметь объект типа ResourceDictionary).

Надеюсь, это поможет!

0
ответ дан 7 December 2019 в 05:27
поделиться

d'Oh ... после компиляции в локальную корзину, чтобы ссылки были относительными, я реализовал решение URI пакета, найденное здесь: ResourceDictionary в отдельной сборке , а затем FindResource (x: здесь ключевое значение).

@PeterAllenWeb, @Pwninstein, спасибо за ваши быстрые ответы и за то, что заставили меня снова задуматься.

0
ответ дан 7 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

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