Результаты поиска
Скрытие унаследованных элементов
Я ищу какой-то способ эффективно скрыть унаследованные члены. У меня есть библиотека классов, которые наследуются от общих базовых классов. Некоторые из более поздних классов-потомков наследуют свойства зависимостей, которые стали рудиментарными и могут быть немного запутанными при использовании IntelliSense или классов в визуальном конструкторе.
Все эти классы являются элементами управления, которые записываются для компиляции либо для WPF, либо для Silverlight 2.0. Я знаю о ICustomTypeDescriptor и ICustomPropertyProvider, но я почти уверен, что они не могут быть использованы в Silverlight.
Это не столько функциональная проблема, сколько проблема удобства использования. Что же мне делать?
Обновление
Некоторые свойства, которые я действительно хотел бы скрыть, происходят от предков, которые не являются моими собственными, и из-за специфического инструмента, для которого я разрабатываю, я не могу сделать скрытие членов с помощью оператора new . (Я знаю, это смешно)
Какой самый простой способ добавить сжатие к WCF в Silverlight?
У меня есть приложение silverlight 2 beta 2, которое обращается к веб-службе WCF. Из-за этого в настоящее время он может использовать только привязку basicHttp. Веб-сервис вернет довольно большие объемы данных XML. Это кажется довольно расточительным с точки зрения использования полосы пропускания, поскольку ответ, если его сжать, будет меньше в 5 раз (на самом деле я вставил ответ в txt-файл и сжал его.).
Запрос действительно имеет "Accept-Encoding: gzip, deflate" - есть ли какой-либо способ получить WCF service gzip (или иным образом сжать) ответ?
Я действительно нашел эту ссылку , но она определенно кажется немного сложной для функциональности, которая должна быть обработана out-of-the-box IMHO.
OK-сначала я отметил решение, используя System.IO.Compression в качестве ответа, поскольку я никогда не мог "seem" заставить работать динамическое сжатие IIS7. Ну, как это получается:
Динамическое сжатие на IIS7 работало все время. Просто плагин Nikhil Web Developer Helper для IE не показал, что он работает. Я предполагаю, что поскольку SL передает вызов веб-службы браузеру, то браузер обрабатывает его "under the covers", и инструмент Nikhil никогда не видит сжатый ответ. Я смог подтвердить это с помощью Fiddler, который отслеживает трафик, внешний по отношению к браузерному приложению. В fiddler ответ был, по сути, gzip сжатым!!
Другая проблема с решением System.IO.Compression заключается в том, что System.IO.Compression не существует в Silverlight CLR.
Таким образом, с моей точки зрения, EASIEST способ включить сжатие WCF в Silverlight-это включить динамическое сжатие в IIS7 и вообще не писать код.
Как присоединить обработчик ChangeEvent к наследуемому свойству зависимостей?
Как бы вы прикрепили обратный вызов propertychanged к свойству, которое наследуется? Вроде такой:
class A {
DependencyProperty prop;
}
class B : A {
//...
prop.AddListener(PropertyChangeCallback);
}
Загрузка двоичных данных с помощью Silverlight 2b2
Я пытаюсь загрузить файл или поток данных на наш веб-сервер, и я не могу найти достойный способ сделать это. Я пробовал оба WebClient и WebRequest оба имеют свои проблемы.
WebClient
Приятно и легко, но вы не получаете никакого уведомления о том, что асинхронная загрузка завершена, и событие UploadProgressChanged не возвращается с чем-либо полезным. Альтернативой является преобразование двоичных данных в строку и использование UploadStringASync , потому что тогда , по крайней мере, вы получите UploadStringCompleted, проблема в том, что вам нужно много ram для больших файлов, поскольку он кодирует все данные и загружает их за один раз.
HttpWebRequest
Немного сложнее, но все же делает то, что нужно, проблема, которую я получаю, заключается в том, что, хотя она вызывается в фоновом потоке (предположительно), она по-прежнему блокирует мой UI и весь браузер, пока загрузка не завершится, что кажется не совсем правильным.
Обычный .net имеет некоторые соответствующие методы WebClient для OnUploadDataCompleted и прогресса, но они не доступны в Silverlight .net ... большое упущение, я думаю!
У кого-нибудь есть какие-либо решения, мне нужно загрузить несколько двоичных файлов предпочтительно с прогрессом, но мне нужно выполнить некоторые действия, когда файлы завершат свою загрузку.
С нетерпением ждем помощи с этим.
Как обновить мой UI изнутри HttpWebRequest.BeginGetRequestStream в Silverlight
Я загружаю несколько файлов, используя BeginGetRequestStream из HttpWebRequest, но я хочу обновить контроль выполнения, который я написал, Пока я публикую поток данных.
Как это должно быть сделано, я попытался вызвать Dispatch.BeginInvoke (как показано ниже) из цикла, который толкает данные в поток, но он блокирует браузер до его завершения, поэтому он, похоже, находится в каком-то тупике рабочего потока/пользовательского интерфейса.
Это фрагмент кода в значительной степени то, что я делаю:
class RequestState
{
public HttpWebRequest request; // holds the request
public FileDialogFileInfo file; // store our file stream data
public RequestState( HttpWebRequest request, FileDialogFileInfo file )
{
this.request = request;
this.file = file;
}
}
private void UploadFile( FileDialogFileInfo file )
{
UriBuilder ub = new UriBuilder( app.receiverURL );
ub.Query = string.Format( "filename={0}", file.Name );
// Open the selected file to read.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( ub.Uri );
request.Method = "POST";
RequestState state = new RequestState( request, file );
request.BeginGetRequestStream( new AsyncCallback( OnUploadReadCallback ), state );
}
private void OnUploadReadCallback( IAsyncResult asynchronousResult )
{
RequestState state = (RequestState)asynchronousResult.AsyncState;
HttpWebRequest request = (HttpWebRequest)state.request;
Stream postStream = request.EndGetRequestStream( asynchronousResult );
PushData( state.file, postStream );
postStream.Close();
state.request.BeginGetResponse( new AsyncCallback( OnUploadResponseCallback ), state.request );
}
private void PushData( FileDialogFileInfo file, Stream output )
{
byte[] buffer = new byte[ 4096 ];
int bytesRead = 0;
Stream input = file.OpenRead();
while( ( bytesRead = input.Read( buffer, 0, buffer.Length ) ) != 0 )
{
output.Write( buffer, 0, bytesRead );
bytesReadTotal += bytesRead;
App app = App.Current as App;
int totalPercentage = Convert.ToInt32( ( bytesReadTotal / app.totalBytesToUpload ) * 100 );
// enabling the following locks up my UI and browser
Dispatcher.BeginInvoke( () =>
{
this.ProgressBarWithPercentage.Percentage = totalPercentage;
} );
}
}
Как обновить мой UI изнутри HttpWebRequest.BeginGetRequestStream в Silverlight
Я загружаю несколько файлов, используя BeginGetRequestStream из HttpWebRequest, но я хочу обновить контроль выполнения, который я написал, Пока я публикую поток данных.
Как это должно быть сделано, я попытался вызвать Dispatch.BeginInvoke (как показано ниже) из цикла, который толкает данные в поток, но он блокирует браузер до его завершения, поэтому он, похоже, находится в каком-то тупике рабочего потока/пользовательского интерфейса.
Это фрагмент кода в значительной степени то, что я делаю:
class RequestState
{
public HttpWebRequest request; // holds the request
public FileDialogFileInfo file; // store our file stream data
public RequestState( HttpWebRequest request, FileDialogFileInfo file )
{
this.request = request;
this.file = file;
}
}
private void UploadFile( FileDialogFileInfo file )
{
UriBuilder ub = new UriBuilder( app.receiverURL );
ub.Query = string.Format( "filename={0}", file.Name );
// Open the selected file to read.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( ub.Uri );
request.Method = "POST";
RequestState state = new RequestState( request, file );
request.BeginGetRequestStream( new AsyncCallback( OnUploadReadCallback ), state );
}
private void OnUploadReadCallback( IAsyncResult asynchronousResult )
{
RequestState state = (RequestState)asynchronousResult.AsyncState;
HttpWebRequest request = (HttpWebRequest)state.request;
Stream postStream = request.EndGetRequestStream( asynchronousResult );
PushData( state.file, postStream );
postStream.Close();
state.request.BeginGetResponse( new AsyncCallback( OnUploadResponseCallback ), state.request );
}
private void PushData( FileDialogFileInfo file, Stream output )
{
byte[] buffer = new byte[ 4096 ];
int bytesRead = 0;
Stream input = file.OpenRead();
while( ( bytesRead = input.Read( buffer, 0, buffer.Length ) ) != 0 )
{
output.Write( buffer, 0, bytesRead );
bytesReadTotal += bytesRead;
App app = App.Current as App;
int totalPercentage = Convert.ToInt32( ( bytesReadTotal / app.totalBytesToUpload ) * 100 );
// enabling the following locks up my UI and browser
Dispatcher.BeginInvoke( () =>
{
this.ProgressBarWithPercentage.Percentage = totalPercentage;
} );
}
}
Каков ваш главный запрос на функцию Silverlight?
Я уберу здесь очевидное: микрофон и поддержка webcam. Кроме этого, если бы вы управляли командой Silverlight, то каким был бы ваш самый высокий приоритет для Silverlight v.Next?
Отказ от ответственности: если мы получим несколько хороших ответов, я передам их людям, которых я знаю в команде Silverlight.
UPDATE: лучшее место, чтобы сообщить о Silverlight запросах функций сейчас-это сайт UserVoice: http://silverlight.uservoice.com/
Обнаружение версий с помощью Silverlight
Как я могу эффективно и эффективно определить версию и, если уж на то пошло, любую доступную информацию об экземпляре Silverlight , запущенном в данный момент в браузере?
Silverlight против Flex
Моя компания разрабатывает несколько типов приложений. Большая часть нашего бизнеса происходит от создания мультимедийных приложений, как правило, выполняемых в Flash. Однако теперь эта сторона дома начинает мигрировать в сторону развития doing Flex.
Большинство наших разработок осуществляется с помощью .NET. Я пытаюсь сделать толчок к созданию Silverlight вместо этого, так как это будет лучше использовать преимущества .NET разработчиков в штате. Я предпочитаю платформу Silverlight платформе Flex по той простой причине, что Silverlight-это весь код .NET. У нас в штате больше .NET разработчиков, чем Flash/Flex разработчиков, и большинство наших Flash/Flex разработчиков-графические художники (не настоящие программисты). Единственная причина, по которой они сейчас стремятся к Flex, - это то, что это кажется логичным шагом от Flash.
Я занимался разработкой с использованием обоих,и я искренне верю, что Silverlight легче работать. Но я пытаюсь убедить людей, которые являются всего лишь разработчиками Flash.
Итак, вот мой вопрос: если я собираюсь пойти на встречу, чтобы похвалить Silverlight, почему компания хочет пойти с Silverlight вместо Flex? Кроме очевидного "не у всех есть Silverlight", каковы плюсы и минусы для каждого?
Silverlight программный доступ к видеофайлу Sony RZ30N
Я хотел бы обойти функциональность веб-сервера подключенной к сети Веб-камеры Sony SNC-RZ30N и отобразить видеопоток в приложении Silverlight.
Я не могу найти никаких примеров взаимодействия с камерой программно.
Любые зацепки будут высоко оценены. Тнх.
Обновление 09/09/2008: нашел хороший сайт с примерами Javascript для управления камерой, но до сих пор нет средств для вставки видео в iFrame или тому подобное:
http://www2.zdo.com/archives/3-JavaScript-API-to-Control-SONY-SNC-RZ30N-Network-Camera.html
Дуга
Какова цель файла AppManifest.xaml в приложениях Silverlight?
Открывая файл .xap , который генерируется как результат работы приложения Silverlight, с которым я возился в последнее время, я заметил файл под названием AppManifest.xaml .
Я также заметил опцию на страницах свойств для проекта Silverlight, которая, по-видимому, позволяет вам необязательно не выводить AppManifest.xaml для проекта. При снятии этой опции, однако, я получаю ошибки при запуске приложения: Invalid or malformed application: Check manifest .
Какова цель файла AppManifest.xaml ?
Привязка пользовательского атрибута в Silverlight
У меня есть два элемента управления Silverlight в моем проекте, оба имеют свойства TeamId. Я хотел бы связать их вместе в XAML в элементе управления, содержащем оба пользовательских элемента управления, похожих на:
<agChat:UserTeams x:Name="oUserTeams" />
<agChat:OnlineUser x:Name="oOnlineUsers" TeamId="{Binding ElementName=oUserTeams, Path=TeamId}" />
В первом элементе управления я реализую System.ComponentModel.INotifyPropertyChanged и вызываю событие PropertyChanged при изменении свойства TeamId.
Во втором элементе управления я использовал фрагмент propdp для идентификации TeamId как свойства зависимости.
// Using a DependencyProperty as the backing store for TeamId. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TeamIdProperty =
DependencyProperty.Register(
"TeamId",
typeof(string),
typeof(OnlineUsers),
new System.Windows.PropertyMetadata(new System.Windows.PropertyChangedCallback(TeamChanged)));
Однако, когда элементы управления silverlight сначала создаются, я получаю следующее исключение из Silverlight:
Unhandled Error in Silverlight 2 Application Invalid attribute value {Binding ElementName=oUserTeams, Path=TeamId} for property TeamId. [Line: 21 Position: 146] at System.Windows.Application.LoadComponent(Object component, Uri xamlUri) at agChat.Page.InitializeComponent() at agChat.Page..ctor() at agChat.App.Application_Startup(Object sender, StartupEventArgs e) at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)
Есть идеи, что я делаю неправильно? Очевидно, что все это может быть сделано в коде, но это кажется правильным подходом.
Databind RenderTransform масштабирование в Silverlight 2 бета 2
Кто-нибудь знает, можно ли привязать к базе данных ScaleX и ScaleY преобразования рендеринга в Silverlight 2 Beta 2? Преобразование привязки возможно в WPF - но я получаю ошибку при настройке моей привязки в Silverlight через XAML. Возможно, это можно сделать с помощью кода?
<Image Height="60" HorizontalAlignment="Right"
Margin="0,122,11,0" VerticalAlignment="Top" Width="60"
Source="Images/Fish128x128.png" Stretch="Fill"
RenderTransformOrigin="0.5,0.5" x:Name="fishImage">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Image.RenderTransform>
</Image>
Я хочу связать ScaleX и ScaleY элемента ScaleTransform.
Я получаю ошибку времени выполнения при попытке привязки к двойному свойству в контексте данных:
Message="AG_E_PARSER_BAD_PROPERTY_VALUE [Line: 1570 Position: 108]"
Моя привязка выглядит так:
<ScaleTransform ScaleX="{Binding Path=SelectedDive.Visibility}"
ScaleY="{Binding Path=SelectedDive.Visibility}"/>
Я трижды проверил, что путь привязки правильный - я привязываю slidebar к тому же значению, и это работает просто отлично...
Видимость имеет тип double и представляет собой число между 0.0 и 30.0. У меня есть конвертер значений, который масштабирует это число до 0.5 и 1 - я хочу масштабировать размер рыбы в зависимости от чистоты воды. Поэтому я не думаю, что это проблема с типом, с которым я связываюсь...
Как сделать кроссдомен звонки из Silverlight?
Что необходимо для успешного выполнения вызова crossdomain из Silverlight?

