Отобразите UriSource и привязку данных

Я просто попытался отредактировать это, но я не был зарегистрирован, поэтому не знаю, где мое редактирование. Я пытался включить множественный выбор. Поэтому я думаю, что лучший ответ:

. Для одного значения наиболее простым (читаемым человеком), вероятно, является:

df.loc[df['column_name'] == some_value]

Для списков значений вы также можете использовать:

df.loc[df['column_name'].isin(some_values)]

Например,

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
               'B': 'one one two three two two one three'.split(),
               'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
#      A      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8
# 5  bar    two  5  10
# 6  foo    one  6  12
# 7  foo  three  7  14

print(df.loc[df['A'] == 'foo'])

дает

     A      B  C   D
0  foo    one  0   0
2  foo    two  2   4
4  foo    two  4   8
6  foo    one  6  12
7  foo  three  7  14

Если у вас есть несколько критериев, которые вы хотите выбрать, вы можете поместить их в список и использовать 'isin':

print(df.loc[df['B'].isin(['one','three'])])

дает

      A      B  C   D
0  foo    one  0   0
1  bar    one  1   2
3  bar  three  3   6
6  foo    one  6  12
7  foo  three  7  14

Обратите внимание, однако, что если вы хотите сделать это много раз, более эффективно сделать A сначала индекс, а затем используйте df.loc:

df = df.set_index(['A'])
print(df.loc['foo'])

дает

  A      B  C   D
foo    one  0   0
foo    two  2   4
foo    two  4   8
foo    one  6  12
foo  three  7  14
64
задан H.B. 12 December 2011 в 12:23
поделиться

4 ответа

WPF имеет встроенные преобразователи для определенных типов. При привязке свойства Image's Source с string или Uri значение, под капотом, WPF будет использовать ImageSourceConverter для преобразования значения в ImageSource.

Так

<Image Source="{Binding ImageSource}"/>

работал бы, если бы свойство ImageSource было строковым представлением допустимого URI к изображению.

Вы можете, конечно, самокрутка Обязательный преобразователь:

public class ImageConverter : IValueConverter
{
    public object Convert(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        return new BitmapImage(new Uri(value.ToString()));
    }

    public object ConvertBack(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

и использование это как это:

<Image Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}"/>
81
ответ дан Clemens 24 November 2019 в 15:48
поделиться

Можно также просто установить Исходный атрибут вместо того, чтобы использовать дочерние элементы. Чтобы сделать этот Ваш класс должен возвратить изображение как Растровое изображение. Вот пример одного способа, которым я сделал его

<Image Width="90" Height="90" 
       Source="{Binding Path=ImageSource}"
       Margin="0,0,0,5" />

, И свойство класса - просто это

public object ImageSource {
    get {
        BitmapImage image = new BitmapImage();

        try {
            image.BeginInit();
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
            image.UriSource = new Uri( FullPath, UriKind.Absolute );
            image.EndInit();
        }
        catch{
            return DependencyProperty.UnsetValue;
        }

        return image;
    }
}

, я предполагаю, что это может быть немного больше работы, чем преобразователь значения, но это - другая опция.

18
ответ дан palehorse 24 November 2019 в 15:48
поделиться

У Вас должна быть реализация интерфейс IValueConverter, который преобразовывает uri в изображение. Ваша реализация Преобразования IValueConverter будет выглядеть примерно так:

BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(value as string);
image.EndInit();

return image;

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

<Image>
    <Image.Source>
        <BitmapImage UriSource="{Binding Path=ImagePath, Converter=...}" />
    </Image.Source>
</Image>
8
ответ дан Dale Ragan 24 November 2019 в 15:48
поделиться

This article by Atul Gupta has sample code that covers several scenarios:

  1. Regular resource image binding to Source property in XAML
  2. Binding resource image, but from code behind
  3. Binding resource image in code behind by using Application.GetResourceStream
  4. Loading image from file path via memory stream (same is applicable when loading blog image data from database)
  5. Loading image from file path, but by using binding to a file path Property
  6. Binding image data to a user control which internally has image control via dependency property
  7. Same as point 5, but also ensuring that the file doesn't get's locked on hard-disk
20
ответ дан 24 November 2019 в 15:48
поделиться
Другие вопросы по тегам:

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