2014-02-20 2 views
1

Привет, я новичок в wpf, поэтому у меня один вопросКак обрабатывать новые файлы в приложении wpf?

Я хочу разрешить пользователю загружать в него новые файлы, а затем привязывать их к моим страницам, если пользователь хочет изменить кнопку «ОК», а затем предыдущий будет удален и новая кнопка будет отображаться я не знаю, как это сработает

Сначала я думал об относительном пути, но это не сработает для двух ПК

я просто хочу, чтобы пользователь может случиться изменить образа моих приложение

поэтому у него будет опция загрузки, и она будет работа для всех ПК

+0

это звучит как ваш спрашивать, если вы можете изменить дизайн приложения динамически? Для этого вам понадобится фрейм-плагин (и это не так просто), попробуйте Prism (http: //compositewpf.codeplex.com /) – cjb110

+0

no @ cjb110 Я хочу просто сменить кнопку, как я могу справиться с этими файлами, причина в том, что это требования клиентов, потому что клиент хочет изменить кнопки onlny –

+0

@ cjb110 Путь к разработке простой проблемы. Вы на зарплате Prism? ;) Вы можете «динамически изменять приложение», заменяя модели просмотра, переключая состояния просмотра, запуская раскадровку анимации или используя привязки с конвертерами. Но дерьмо все функции wpf, позволяет загружать зависимость! – Gusdor

ответ

2

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

  • База данных облаков, в которой вы можете сохранить изображение как BLOB. или
  • облако хранения, где вы можете загружать изображения, а затем извлекать из клиентских машин.

EDIT:

Создать конвертер для преобразования байт [] Вы извлекается из БД. Импортируйте ресурс в ваш wpf-элемент управления и привяжите статический ресурс к вашему управлению изображением.

class BinaryImageConverter : IValueConverter 
{ 
    object IValueConverter.Convert(object value, 
     Type targetType, 
     object parameter, 
     System.Globalization.CultureInfo culture) 
    { 
     if(value != null && value is byte[]) 
     { 
      byte[] bytes = value as byte[]; 

      MemoryStream stream = new MemoryStream(bytes); 

      BitmapImage image = new BitmapImage(); 
      image.BeginInit(); 
      image.StreamSource = stream; 
      image.EndInit(); 

      return image; 
     } 

     return null; 
    } 

    object IValueConverter.ConvertBack(object value, 
     Type targetType, 
     object parameter, 
     System.Globalization.CultureInfo culture) 
    { 
     throw new Exception("The method or operation is not implemented."); 
    } 
} 

<Image Source="{Binding Path=Image, Converter={StaticResource imgConverter}}" /> 

Пожалуйста, обратитесь к this link за помощью в динамических ресурсов

+0

Ya спасибо, я просто хочу, чтобы один пример изменил ресурсы изображения. Я использовал статические ресурсы, если вы можете дать мне это было бы замечательно. –

+0

Вы хотите сохранить изображение в облачном хранилище? или облачной БД? – Avishek

+0

Я хочу сохранить его в db, а затем извлечь из него, но у меня есть 10 страниц, и изображения должны быть получены из одного места. –

0

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

<Image Source="{Binding ImagePath}" /> 
+0

Да, давид, вы правы, но в вашем случае, как путь изображения будет динамичным? У меня нет приложения, которое у меня есть только для установки на компьютере-клиенте –

+0

Не можете ли вы сделать настройку в своем приложении? Если вы хотите изменить ситуацию, заменив файлы, просто используйте относительный путь. – David

+0

Нет, я не имею ни малейшего представления об этом –

1

Ну, если все приложения должны быть обновлены с содержанием (изображение в кнопке «Ok», например), что кто-то обновляет, то все приложения должны иметь доступ к общему местоположению. Имеет смысл сделать это местоположение URL-адресом веб-сайта, где они могут вывести контент.

Вы можете создать сайт .NET WebAPI2, который обслуживает этот контент. И каждое приложение настроено для проверки того, что сайт для нового контента при запуске или что-то подобное. Например, каждое приложение может запустить и нажать http://yourwebsite/buttons/okimage или что-то в этом роде. Он проверяет, является ли изображение новым, и если да, загружает его относительно себя и использует это изображение.

Но почему? Почему вы используете WPF для этого? Почему бы не создать фактическое веб-приложение, где изображения уже являются общими для всех «приложений»? Похоже на неправильную технологию для этого требования ...

Но если вам нужно использовать WPF, хорошо. Может быть, this link поможет?

+0

Спасибо, что человек действительно не прав, я просто хочу дать пользователю возможность изменить вид моего приложения, чтобы он мог изменять изображения. –

+0

Загрузить новый, он должен быть извлечен из одного места и то я могу служить, но моя проблема заключается в том, что у меня есть статический ресурс, поэтому я просто хочу проверять каждый раз, когда этот образ является новым, а затем обслуживать новый до 13 страниц, например, это ..... –

+0

Так что «просто проверяйте каждый раз, когда это изображение новое 'означает, что вы видите, какое изображение вы загрузили, а затем сравниваете его с поданным. Если вам нужен новый, попросите приложение загрузить его, а затем установите источник изображения в codebehind (например). Обновление ответа со ссылкой на другой вопрос, который может помочь. – Nicros

Смежные вопросы