<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Форум '.NET GUI' на RSDN.RU</title>
    <link>http://www.rsdn.ru/Forum/dotnet.gui/</link>
    <description>Создание GUI на .NET</description>
    <category>dotnet</category>
    <category>gui</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN.ru, 2001-2007</copyright>
    <webMaster>webmaster@rsdn.ru</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://www.rsdn.ru/rsdn.gif</url>
      <title>RSDN.RU</title>
      <link>http://www.rsdn.ru</link>
    </image>
    <lastBuildDate>Mon, 13 Feb 2012 10:43:33 GMT</lastBuildDate>
    <ttl>5</ttl>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rsdn/dotnet/gui" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rsdn/dotnet/gui" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Печать бланков</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4614911.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4614911.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4614911.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4614911</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4614911.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4614911</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Хотелось бы иметь простой и бесплатный инструмент для печати бланков заказов. Интересно такие вообще есть?&lt;br /&gt;
Причем выглядеть это должно так: Бланк показывается в неком окне, и при нажатии кнопки "Печать" он сразу печатается, без вызова диалогового окна настроек печати.&lt;br /&gt;
&lt;br /&gt;
Реально ли это вообще сделать?&lt;br /&gt;
Копал в сторону PDFSharp и iTextSharp, чтоб сгенерить бланк в PDF и напечатать, но там печать PDF осуществляется при помощи установленной AcrobatReader, что неприемлемо, потому что ее может ведь и не быть...&lt;br /&gt;
&lt;br /&gt;
Ранее делал это же самое при помощи Word, ну классическим методом через шаблон бланка, и расстановку значений в закладки.&lt;br /&gt;
Но этот метод имеет некоторые недостатки. Кстати, "недостаток" в виде того что Офис может быть не установлен у пользователя легко обходится &amp;mdash; достаточно скопировать Microsoft.Office.Interop.Word.dll в папку проекта, и сделать ссылку именно на нее из Visual Studio. Проверено &amp;mdash; работает даже если не установлен Word. Правда не знаю насколько это законно, подозреваю что не очень)).&lt;br /&gt;
Но собственно недостаток в том что шаблоны ворда довольно тупые и мало что позволяют, например нельзя вставить таблицу с произвольным числом строк. А если и можно, то все это доовольно гемморно. Ну и запускать целый ворд для такой просто задачи не очень рационально, все делается медленно, и процесс ворда иногда остается висеть в памяти, если произошел какой-то сбой.&lt;br /&gt;
&lt;br /&gt;
В общем, намного лучше было бы использовать какой-то специализированный и простой компонент, он вообще существует? Желательно конечно бесплатный.&lt;br /&gt;
&lt;br /&gt;
ReportViewer не устраивает, его нет в .NET 2.0, к тому же он сложный в освоении, и его возможности избыточны.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 13 Feb 2012 02:16:54 GMT</pubDate>
		
			<author>vl690001x &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>WPF рендеринг что и как...</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4613508.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4613508.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4613508.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4613508</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4613508.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4613508</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую.&lt;br /&gt;
&lt;br /&gt;
Что то никак не могу понять про тонкости рендеринга в WPF. Вот на Windows XP вообще не доступно аппаратное ускорение в WPF?&lt;br /&gt;
Оно может работать только на Windows Vista и выше что ли? И что именно WPF может ускорять аппаратно? Случайно не один ли D3DImage&lt;br /&gt;
имеет такое "чудо"? А обычное 2Д в нем программно рендерится или имеют аппаратное ускорение. Вообщем хочу все яснее узнать про эту тему.&lt;br /&gt;
Умные сайты только кашу создали в голове у меня. Может кто то разложить все по пунктам?&lt;br /&gt;
Заранее благодарю за ответы.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Sat, 11 Feb 2012 12:45:59 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Repaint и доступ к элементам формы из потока</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4609603.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4609603.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4609603.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4609603</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4609603.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4609603</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте. Задача следующая: необходимо из потока нарисовать что-то на форме.&lt;br /&gt;
Так как напрямую мы обратиться не можем, делаю так:&lt;br /&gt;
&lt;br /&gt;
p2 &amp;mdash; это объект элемента Panel&lt;br /&gt;
g &amp;mdash; это p2.CreateGraphics()&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;

&lt;span class='kw'&gt;private&lt;/span&gt; foo()
{
   SetPixel(...);
}

&lt;span class='kw'&gt;private void&lt;/span&gt; SetPixel(Graphics g, Pen p, &lt;span class='kw'&gt;int&lt;/span&gt; x, &lt;span class='kw'&gt;int&lt;/span&gt; y)
        {
            &lt;span class='kw'&gt;if&lt;/span&gt; (p2.InvokeRequired)
            {    
                SetPixelCallback d = SetPixel;
                Invoke(d, &lt;span class='kw'&gt;new object&lt;/span&gt;[] { g, p, x, y });
            }
            &lt;span class='kw'&gt;else&lt;/span&gt;
            {
                g.DrawEllipse(p, x, y, 1, 1);
            }
        }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
В общем, функция отрабатывает, но, конечно же, не отображает изменения, так как нужен repaint p2&lt;br /&gt;
&lt;br /&gt;
Вопрос: где и как сделать репэинт, чтобы изменения были видны в приложении? Чесслово &amp;mdash; забыл!&lt;br /&gt;
&lt;br /&gt;
p.s. знаю, что привязывать поток p2.Paint не айс &lt;img border='0' width='15' height='15' src='http://www.rsdn.ru/Forum/images/smile.gif' /&gt;&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Wed, 08 Feb 2012 15:02:12 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>datagridview затармаживает основной поток</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4606040.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4606040.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4606040.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4606040</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4606040.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4606040</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;привет&lt;br /&gt;
заполняю датагрид больщим обьемом данных (100 строк &amp;mdash; 200 столбцов )&lt;br /&gt;
раскарашиваю ячейки&lt;br /&gt;
&lt;br /&gt;
ятобы не было cross thread &amp;mdash; функция заполнения вызывается из основного потока&lt;br /&gt;
но время заполнения &amp;mdash; около 3 секунд &amp;mdash; и на это время вся программа умирает&lt;br /&gt;
как всего этого избежать &amp;mdash; как отделить датагрид от основного потока но не получить cross thread&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 14:28:00 GMT</pubDate>
		
			<author>Alexander_fx &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>WPF D3DImage</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4605591.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4605591.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4605591.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605591</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605591.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605591</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Привет!&lt;br /&gt;
Как рисовать 2-д текст в WPF D3DImage?&lt;br /&gt;
Коротенький пример был бы очень кстати.&lt;br /&gt;
Спасибо.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 10:25:29 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>[WPF] Charts</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4605559.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4605559.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4605559.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605559</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605559.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605559</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Подскажите, пожалуйста, какие-нибудь бесплатные Chart для WPF. Пробовал тут поискать, но темы очень старые, может есть что поновее?&lt;br /&gt;
Dynamic Data Display вроде неплохой, но Behavior's на биндинги громоздить не хочется.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 10:10:06 GMT</pubDate>
		
			<author>Glas &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Silverlight TextBox и событие LostFocus</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4605463.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4605463.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4605463.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605463</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605463.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605463</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Доброго...&lt;br /&gt;
&lt;br /&gt;
На форме есть элемент TextBox с замаплиным свойствои и двунаправленным биндингом.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
 &amp;lt;TextBox LostFocus="nameTextBox_LostFocus" Name="nameTextBox" Text="{Binding Path=Name, Mode=TwoWay}" /&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
Пытаюсь сохранить измененное значение подписавшись на событие LostFocus&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
        &lt;span class='kw'&gt;private void&lt;/span&gt; nameTextBox_LostFocus(&lt;span class='kw'&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
        {
            &lt;span class='kw'&gt;if&lt;/span&gt; (questionnaireDomainDataSource.HasChanges)
            {                
                questionnaireDomainDataSource.SubmitChanges();
            }
        }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
Но при проверке есть ли изменения в DomainDataSource, но говорит, что их нет (изменений HasChanges), а через некоторое значение свойство оновляется.&lt;br /&gt;
Я так понимаю, что при присвоении значения в DomainDataSource происходят еще какие то действия, например срабатывает валидация, и внутри события LostFocus значение еще не обновлено.&lt;br /&gt;
&lt;br /&gt;
Как быть в этом случае?&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 09:05:04 GMT</pubDate>
		
			<author>detox &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Перевод WPF пикселей в мм</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4605315.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4605315.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4605315.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605315</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605315.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605315</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Как перевести WPF пикселей а мм? есть ли спец функция? или самому умножать надо?&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 07:21:35 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Как устроен механизм Binding'а в WPF (вопрос с примером)?</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4605211.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4605211.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4605211.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605211</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605211.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605211</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Мы добавили на нашу страницу (WPF) DependencyProperty с именем ComplexValue. На странице есть TextBox1 и TextBox2. Требуется, чтобы это ComplexValue содержало в себе конкатенацию TextBox1.Text + TextBox2.Text.&lt;br /&gt;
&lt;br /&gt;
Как это сделать? Я думал, что можно подписаться на изменения DependencyProperty TextBox.TextProperty, но такой возможности нет (нет события).&lt;br /&gt;
&lt;br /&gt;
Решил таким способом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
    &lt;span class='kw'&gt;public partial class&lt;/span&gt; MainWindow : Window
    {
        &lt;span class='com'&gt;// На странице есть TextBox1 и TextBox2.
        // Требуется, чтобы это свойство (ComplexValue) содержало конкатеницию TextBox1.Text + TextBox2.Text&lt;/span&gt;
        &lt;span class='kw'&gt;public static&lt;/span&gt; DependencyProperty ComplexValueProperty =
            DependencyProperty.Register(&lt;span class='str'&gt;"ComplexValue"&lt;/span&gt;, &lt;span class='kw'&gt;typeof&lt;/span&gt; (&lt;span class='kw'&gt;string&lt;/span&gt;), &lt;span class='kw'&gt;typeof&lt;/span&gt; (MainWindow));

        &lt;span class='com'&gt;// Для этого вводим 2 доп. свойства и устанавливаем binding на них&lt;/span&gt;

        &lt;span class='kw'&gt;public static&lt;/span&gt; DependencyProperty Value1Property =
            DependencyProperty.Register(&lt;span class='str'&gt;"Value1"&lt;/span&gt;, &lt;span class='kw'&gt;typeof&lt;/span&gt; (&lt;span class='kw'&gt;string&lt;/span&gt;), &lt;span class='kw'&gt;typeof&lt;/span&gt; (MainWindow),
                                        &lt;span class='kw'&gt;new&lt;/span&gt; PropertyMetadata(Value1Changed));

        &lt;span class='kw'&gt;public static&lt;/span&gt; DependencyProperty Value2Property =
            DependencyProperty.Register(&lt;span class='str'&gt;"Value2"&lt;/span&gt;, &lt;span class='kw'&gt;typeof&lt;/span&gt; (&lt;span class='kw'&gt;string&lt;/span&gt;), &lt;span class='kw'&gt;typeof&lt;/span&gt; (MainWindow),
                                        &lt;span class='kw'&gt;new&lt;/span&gt; PropertyMetadata(Value2Changed));

        &lt;span class='kw'&gt;public&lt;/span&gt; MainWindow()
        {
            InitializeComponent();

            &lt;span class='com'&gt;// Устанавливаем Binding&lt;/span&gt;
            TextBox1.SetBinding(TextBox.TextProperty,
                                &lt;span class='kw'&gt;new&lt;/span&gt; Binding {Source = &lt;span class='kw'&gt;this&lt;/span&gt;, Path = &lt;span class='kw'&gt;new&lt;/span&gt; PropertyPath(&lt;span class='str'&gt;"Value1"&lt;/span&gt;), Mode = BindingMode.TwoWay});
            TextBox2.SetBinding(TextBox.TextProperty,
                                &lt;span class='kw'&gt;new&lt;/span&gt; Binding {Source = &lt;span class='kw'&gt;this&lt;/span&gt;, Path = &lt;span class='kw'&gt;new&lt;/span&gt; PropertyPath(&lt;span class='str'&gt;"Value2"&lt;/span&gt;), Mode = BindingMode.TwoWay});

            &lt;span class='com'&gt;// Для индикации (чтобы видеть, что все работает (режим только чтение))&lt;/span&gt;
            ComplexTextBox.SetBinding(TextBox.TextProperty,
                                      &lt;span class='kw'&gt;new&lt;/span&gt; Binding { Source = &lt;span class='kw'&gt;this&lt;/span&gt;, Path = &lt;span class='kw'&gt;new&lt;/span&gt; PropertyPath(&lt;span class='str'&gt;"ComplexValue"&lt;/span&gt;) });
        }

        &lt;span class='kw'&gt;private static void&lt;/span&gt; Value1Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            &lt;span class='kw'&gt;var&lt;/span&gt; mainWindow = (MainWindow) d;

            &lt;span class='com'&gt;// конкатенация&lt;/span&gt;
            &lt;span class='kw'&gt;var&lt;/span&gt; complexValue = (e.NewValue &lt;span class='kw'&gt;as string&lt;/span&gt;) + (mainWindow.GetValue(Value2Property) &lt;span class='kw'&gt;as string&lt;/span&gt;);

            mainWindow.SetValue(ComplexValueProperty, complexValue);
        }

        &lt;span class='kw'&gt;private static void&lt;/span&gt; Value2Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            &lt;span class='kw'&gt;var&lt;/span&gt; mainWindow = (MainWindow) d;

            &lt;span class='com'&gt;// конкатенация&lt;/span&gt;
            &lt;span class='kw'&gt;var&lt;/span&gt; complexValue = (mainWindow.GetValue(Value1Property) &lt;span class='kw'&gt;as string&lt;/span&gt;) + (e.NewValue &lt;span class='kw'&gt;as string&lt;/span&gt;);

            mainWindow.SetValue(ComplexValueProperty, complexValue);
        }
    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Можно ли это сделать проще?&lt;br /&gt;
&lt;br /&gt;
&lt;div class='mod'&gt;10.02.12 00:33: Перенесено модератором из '.NET' &amp;mdash; AndrewVK&lt;/div&gt;&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 06 Feb 2012 05:32:23 GMT</pubDate>
		
		
			<slash:comments>16</slash:comments>
		
	</item>

	<item>
		<title>WPF DataGrid Cell Background  - ошибка при скроллинге</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4603618.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4603618.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4603618.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4603618</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4603618.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4603618</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте!&lt;br /&gt;
&lt;br /&gt;
Есть DataGrid, биндингом к нему прикреплена ObservableCollection&amp;lt;TextLogItem&amp;gt;&lt;br /&gt;
В зависимости от значения поля TextLogItem, установлено раскрашивание фона&lt;br /&gt;
Коллекция наполняется по таймеру.&lt;br /&gt;
Пока не трогаю скроллбар, все в порядке. Как только начинаю крутить, раскраска некоторых элементов сбивается случайным образом.&lt;br /&gt;
&lt;br /&gt;
Целиком проект для VS2010 &lt;a class="m" target="_blank"&gt;http://files.rsdn.ru/93628/TestDataGrid.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
MainWindow.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;

&amp;lt;Window x:Class="TestDataGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:TestDataGrid"
        Title="MainWindow" Height="480" Width="640" Loaded="Window_Loaded" Closed="Window_Closed"&amp;gt;
    
    &amp;lt;Window.Resources&amp;gt;
        &amp;lt;local:GridCellHighlighter x:Key="logHighlighter"/&amp;gt;
    &amp;lt;/Window.Resources&amp;gt;
    
    &amp;lt;DataGrid 
                                ItemsSource="{Binding Path=LogLines}" 
                                IsSynchronizedWithCurrentItem="False"
                                IsReadOnly="True" 
                                CanUserDeleteRows="False" 
                                CanUserAddRows="False" 
                                AutoGenerateColumns="False" 
                                SelectionMode="Single" 
                                HorizontalScrollBarVisibility="Hidden" 
                                VerticalScrollBarVisibility="Visible" &amp;gt;
        &amp;lt;DataGrid.Columns&amp;gt;
            &amp;lt;DataGridTextColumn  Binding="{Binding Path=Date, StringFormat={}{0:yyyy/MM/dd HH:mm:ss}}" Header="Дата" IsReadOnly="True" /&amp;gt;
            &amp;lt;DataGridTextColumn  Binding="{Binding Path=Category}" Width="*" Header="Категория" IsReadOnly="True" /&amp;gt;
            &amp;lt;DataGridTextColumn  Binding="{Binding Path=Text}" Width="*" Header="Сообщение" IsReadOnly="True" /&amp;gt;
        &amp;lt;/DataGrid.Columns&amp;gt;

        &amp;lt;DataGrid.CellStyle&amp;gt;
            &amp;lt;Style TargetType="{x:Type DataGridCell}"&amp;gt;
                &amp;lt;Setter Property="Background"&amp;gt;
                    &amp;lt;Setter.Value&amp;gt;
                        &amp;lt;MultiBinding Converter="{StaticResource logHighlighter}" &amp;gt;
                            &amp;lt;MultiBinding.Bindings&amp;gt;
                                &amp;lt;Binding RelativeSource="{RelativeSource Self}"&amp;gt;&amp;lt;/Binding&amp;gt;
                                &amp;lt;!-- &amp;lt;Binding Path="Message"&amp;gt;&amp;lt;/Binding&amp;gt; --&amp;gt;
                            &amp;lt;/MultiBinding.Bindings&amp;gt;
                        &amp;lt;/MultiBinding&amp;gt;
                    &amp;lt;/Setter.Value&amp;gt;
                &amp;lt;/Setter&amp;gt;
                &amp;lt;Style.Triggers&amp;gt;
                    &amp;lt;Trigger Property="DataGridCell.IsSelected" Value="True"&amp;gt;
                        &amp;lt;Setter Property="Background" Value="#0000A0" /&amp;gt;
                    &amp;lt;/Trigger&amp;gt;
                &amp;lt;/Style.Triggers&amp;gt;

            &amp;lt;/Style&amp;gt;
        &amp;lt;/DataGrid.CellStyle&amp;gt;


    &amp;lt;/DataGrid&amp;gt;
&amp;lt;/Window&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MainWindow.cs&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
   &lt;span class='kw'&gt;public partial class&lt;/span&gt; MainWindow : Window
    {
        &lt;span class='kw'&gt;private&lt;/span&gt; DispatcherTimer _updateVMTimer;

        &lt;span class='kw'&gt;public&lt;/span&gt; MainWindow()
        {
            _logLines = &lt;span class='kw'&gt;new&lt;/span&gt; ObservableCollection&amp;lt;TextLogItem&amp;gt;();

            InitializeComponent();

            DataContext = &lt;span class='kw'&gt;this&lt;/span&gt;;
        }

        &lt;span class='kw'&gt;private&lt;/span&gt; ObservableCollection&amp;lt;TextLogItem&amp;gt; _logLines;
        &lt;span class='kw'&gt;public&lt;/span&gt; ObservableCollection&amp;lt;TextLogItem&amp;gt; LogLines
        {
            &lt;span class='kw'&gt;get&lt;/span&gt;
            {
                &lt;span class='kw'&gt;return&lt;/span&gt; _logLines;
            }
        }

        &lt;span class='kw'&gt;private void&lt;/span&gt; UpdateVMTimerTick(&lt;span class='kw'&gt;object&lt;/span&gt; sender, EventArgs e)
        {

            &lt;span class='kw'&gt;this&lt;/span&gt;.Dispatcher.Invoke(&lt;span class='kw'&gt;new&lt;/span&gt; Action(
                () =&amp;gt;
                {
                    Random rnd = &lt;span class='kw'&gt;new&lt;/span&gt; Random();
                    &lt;span class='kw'&gt;int&lt;/span&gt; category = rnd.Next(3);
                    DateTime dt = DateTime.Now;


                    LogLines.Add(&lt;span class='kw'&gt;new&lt;/span&gt; TextLogItem 
                    { 
                        Category = category,
                        Text = String.Format(&lt;span class='str'&gt;"Category = {0} {1}"&lt;/span&gt;, category, dt),
                        Date = dt
                    });

                }));

        }

        &lt;span class='kw'&gt;private void&lt;/span&gt; Window_Loaded(&lt;span class='kw'&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
        {
            _updateVMTimer = &lt;span class='kw'&gt;new&lt;/span&gt; System.Windows.Threading.DispatcherTimer();
            _updateVMTimer.Tick += UpdateVMTimerTick;
            _updateVMTimer.Interval = &lt;span class='kw'&gt;new&lt;/span&gt; TimeSpan(0, 0, 0, 0, 500);
            _updateVMTimer.Start();
        }

        &lt;span class='kw'&gt;private void&lt;/span&gt; Window_Closed(&lt;span class='kw'&gt;object&lt;/span&gt; sender, EventArgs e)
        {
            _updateVMTimer.Stop();
            _updateVMTimer.Tick -= UpdateVMTimerTick;
        }

    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
GridCellHighlighter&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
    &lt;span class='kw'&gt;public class&lt;/span&gt; GridCellHighlighter : IMultiValueConverter
    {
        &lt;span class='kw'&gt;public object&lt;/span&gt; Convert(&lt;span class='kw'&gt;object&lt;/span&gt;[] values, Type targetType, &lt;span class='kw'&gt;object&lt;/span&gt; parameter, CultureInfo culture)
        {

            DataGridCell dgc = values[0] &lt;span class='kw'&gt;as&lt;/span&gt; DataGridCell;
            &lt;span class='kw'&gt;if&lt;/span&gt; (dgc != &lt;span class='kw'&gt;null&lt;/span&gt;)
            {
                TextLogItem textLogItem = dgc.DataContext &lt;span class='kw'&gt;as&lt;/span&gt; TextLogItem;

                &lt;span class='kw'&gt;switch&lt;/span&gt; (textLogItem.Category)
                {
                    &lt;span class='kw'&gt;case&lt;/span&gt; 0:
                        &lt;span class='kw'&gt;return new&lt;/span&gt; SolidColorBrush(Colors.White);
                    &lt;span class='kw'&gt;case&lt;/span&gt; 1:
                        &lt;span class='kw'&gt;return new&lt;/span&gt; SolidColorBrush(Color.FromRgb(255, 236, 142));
                    &lt;span class='kw'&gt;case&lt;/span&gt; 2:
                        &lt;span class='kw'&gt;return new&lt;/span&gt; SolidColorBrush(Color.FromRgb(255, 85, 85)); 

                    &lt;span class='kw'&gt;default&lt;/span&gt;:
                        &lt;span class='kw'&gt;return new&lt;/span&gt; SolidColorBrush(Colors.White);
                }

            }

            &lt;span class='kw'&gt;return new&lt;/span&gt; SolidColorBrush(Colors.LightGray);
        }


        &lt;span class='kw'&gt;public object&lt;/span&gt;[] ConvertBack(&lt;span class='kw'&gt;object value&lt;/span&gt;, Type[] targetTypes, &lt;span class='kw'&gt;object&lt;/span&gt; parameter, CultureInfo culture)
        {
            &lt;span class='kw'&gt;throw new&lt;/span&gt; NotImplementedException();
        }

    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
TextLogItem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
    &lt;span class='kw'&gt;public class&lt;/span&gt; TextLogItem
    {
        &lt;span class='kw'&gt;public&lt;/span&gt; DateTime Date { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }

        &lt;span class='kw'&gt;public int&lt;/span&gt; Category { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }

        &lt;span class='kw'&gt;public string&lt;/span&gt; Text { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }

        &lt;span class='kw'&gt;public&lt;/span&gt; TextLogItem()
        {
            Date = DateTime.Now;
            Text = String.Empty;
            Category = 0;
        }
    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Sat, 04 Feb 2012 16:18:29 GMT</pubDate>
		
			<author>Kostya33 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>WPF с Agg-Sharp есть у кого-то рабочий пример?</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4602828.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4602828.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4602828.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4602828</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4602828.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4602828</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Приветствую всех форумчан!&lt;br /&gt;
Кто работал с WPF и Agg-Sharp? Есть у кого то желание поделиться рабочим примером?&lt;br /&gt;
Так понравилась "картинка в 2D", которую выдает Agg-Sharp с использованием антиалиассинга.&lt;br /&gt;
А как ее "приручить" к генерации и визуализации "изображений" в WPF не вижу примера.&lt;br /&gt;
Кто решил этот вопрос, поделитесь, пожалуйста с общественностью.&lt;br /&gt;
Заранее благодарю от всех нуждающихся.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Fri, 03 Feb 2012 18:02:35 GMT</pubDate>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>WPF как правильно организовать загрузку Details</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4602632.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4602632.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4602632.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4602632</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4602632.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4602632</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Используется Docking от Devexpress.&lt;br /&gt;
&lt;br /&gt;
В auto-hide панелях располагаются Details, в документе расположен Grid.&lt;br /&gt;
Если сделать просто биндинг выбранного Row на Details, то будут загружаться лишние Details которые в данный момент пользователю не видны.&lt;br /&gt;
&lt;br /&gt;
В общем вырисовывается такая задача, нужно для собственного UserControl сделать так чтобы его DataContext инициализировался только в случае когда он виден пользователю.&lt;br /&gt;
Также есть такая ситуация что UserControl размещен в контейнере к которому применяется анимация ( это DevExpressовская реализация ). Нужно соотвественно инициализировать DataContext в случае если нет анимации, чтобы не тормозило во время.&lt;br /&gt;
&lt;br /&gt;
Как такую задачу решить ? Думал сделать Converter но не совсем понятно как определить видимость ( Visibility не совсем то, т.к. скрытые на закладках элементы имеют Visibility = Visible ), а также как определить что UserControl задействован в анимации.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Fri, 03 Feb 2012 14:17:15 GMT</pubDate>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>[WPF] MVVM PRISM DATAGRID пример</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4602499.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4602499.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4602499.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4602499</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4602499.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4602499</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Народ помогите найти пример работы с датагридом в WPF с использованием prism фреймворка. Если там еще и диалоговые окна будут, вообще супер. Спасибо.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Fri, 03 Feb 2012 12:46:46 GMT</pubDate>
		
			<author>pavel2011 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>[WPF] Как создать свойство стиля вложенного элемента?</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4600843.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4600843.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4600843.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4600843</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4600843.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4600843</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Дело такое, что часто приходится использовать таскаемые по плоскости элементы, создавая что-то вроде&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&amp;lt;ItemsControl&amp;gt;
&amp;lt;ItemsControl.ItemsPanelTemplate&amp;gt;
&amp;lt;ItemsPanelTemplate&amp;gt;
&amp;lt;Canvas IsItemsHost="True"/&amp;gt;
&amp;lt;/ItemsPanelTemplate&amp;gt;
&amp;lt;/ItemsControl.ItemsPanelTemplate&amp;gt;
&amp;lt;/ItemsControl&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
и наполнять функциями каждый раз заново. Я стал делать reusable-вариант, используя свой вариант Canvas с возможностью указания относительных координат, границ произвольной формы и т. п.. Но в стандартном ItemsControl (наследование, естественно, от него), нет средств доступа к панели, в данном случае аналог Canvas. Протаскивать каждое свойство неудобно, и я решил добавить свойство ItemsHostStyle, чтоб как и в ItemContainerStyle можно было задавать Binding'и на свойства панели. Но простейший вариант &lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
        &lt;span class='kw'&gt;private static void&lt;/span&gt; OnItemsHostStyleChanged(DependencyObject _d, DependencyPropertyChangedEventArgs _e)
        {
            CanvasContrainer thisControl = _d &lt;span class='kw'&gt;as&lt;/span&gt; CanvasContrainer;
            &lt;span class='kw'&gt;if&lt;/span&gt; (thisControl != &lt;span class='kw'&gt;null&lt;/span&gt;)
            {
                VirtualizingCanvas itemsHost = thisControl.Canvas;
                &lt;span class='kw'&gt;if&lt;/span&gt; (itemsHost != &lt;span class='kw'&gt;null&lt;/span&gt;)
                {
                    Style newStyle = _e.NewValue &lt;span class='kw'&gt;as&lt;/span&gt; Style;
                    &lt;span class='kw'&gt;if&lt;/span&gt; (newStyle != &lt;span class='kw'&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !itemsHost.IsSealed &amp;amp;&amp;amp; newStyle.TargetType != &lt;span class='kw'&gt;typeof&lt;/span&gt;(VirtualizingCanvas))
                        newStyle.TargetType = &lt;span class='kw'&gt;typeof&lt;/span&gt;(VirtualizingCanvas);
                    &lt;span class='kw'&gt;else if&lt;/span&gt; (newStyle != &lt;span class='kw'&gt;null&lt;/span&gt; &amp;amp;&amp;amp; itemsHost.IsSealed &amp;amp;&amp;amp; newStyle.TargetType != &lt;span class='kw'&gt;typeof&lt;/span&gt;(VirtualizingCanvas))
                        &lt;span class='kw'&gt;return&lt;/span&gt;;
                    itemsHost.Style = newStyle;
                }
            }
        }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
не обеспечивает срабатывание Binding'ов, т. е. если я пишу&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
            &amp;lt;stdCtrls:CanvasContrainer.ItemsHostStyle&amp;gt;
                &amp;lt;Style TargetType="stdCtrls:VirtualizingCanvas"&amp;gt;
                    &amp;lt;Setter Property="ActualSize" Value="{Binding ContainerSize, Mode=OneWayToSource}"/&amp;gt;
                &amp;lt;/Style&amp;gt;
            &amp;lt;/stdCtrls:CanvasContrainer.ItemsHostStyle&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
при изменении ActualSize в самом аналоге Canvas в свойстве ContainerSize не вызывается set. &lt;br /&gt;
&lt;br /&gt;
Подскажите пожалуйста, как правильно устанавливать это свойство ItemsHostStyle чтоб Binding'и срабатывали.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Thu, 02 Feb 2012 12:41:19 GMT</pubDate>
		
			<author>Ilya81 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>8</slash:comments>
		
	</item>

	<item>
		<title>WPF Image.Source = WriteableBitmap есть решение?</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4599591.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4599591.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4599591.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4599591</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4599591.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4599591</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Всем привет!&lt;br /&gt;
Есть у кого готовое решение:- контрол Image с "прикрученным" WriteableBitmap. &lt;br /&gt;
Нужна автоматическая реакция такого контрола на изменение его размера(например, в режиме выполнения изменяют мышкой размер окна с таким контролом в нем).&lt;br /&gt;
Т.е. связанный с Image источник данных(WriteableBitmap) должен иметь размер равный Image.&lt;br /&gt;
Прошу уже готовый пример потому. что не знаю, как еще корректней спросить у общественности.&lt;br /&gt;
Свои изыскания зашли в тупик, не выходит согласовать размеры Image с WriteableBitmap в моем UserContol.&lt;br /&gt;
Очень надеюсь на вашу помощь.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Wed, 01 Feb 2012 18:13:33 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Devexpress и производительность</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4599127.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4599127.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4599127.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4599127</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4599127.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4599127</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Кто-нибудь может подсказать по теме? Целесообразно ли использовать данные компоненты в WPF-приложениях с точки зрения производительности?&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Wed, 01 Feb 2012 13:13:24 GMT</pubDate>
		
			<author>bessony &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>UserControl и события изменения его размеров</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4597664.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4597664.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4597664.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4597664</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4597664.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4597664</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Народ!&lt;br /&gt;
Как можно уловить и отреагировать на изменения размеров UseControl лежащего в Window? &lt;br /&gt;
Желателен маленький пример.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Tue, 31 Jan 2012 15:31:08 GMT</pubDate>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>WPF как согласовать размеры UserControl c Window</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4597265.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4597265.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4597265.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4597265</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4597265.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4597265</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;День добрый, всем!&lt;br /&gt;
Мучаюсь с системой макета в WPF. Никак не выходит подружить размеры моего UserControl с размерами окна.&lt;br /&gt;
Хочу добиться того, чтобы мой контрол подстраивался под размеры окна(в рантайме при растягивании окна), что имею:&lt;br /&gt;
1. Обычный Window c Grid&lt;br /&gt;
2. Мой UserControl вложеный в Grid.&lt;br /&gt;
3. В UserControl вложен Grid c Image. Image связан с WriteableBitmap через свойство Source.   &lt;br /&gt;
Рисую в WriteableBitmap и отображаю на Image результат. &lt;br /&gt;
Полагаю такие задачи решают в XAML путем Binding. Но я пока слабо понимаю этот инструмент.&lt;br /&gt;
Покажите, пожалуйста, как такая задача решается обычно.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Tue, 31 Jan 2012 11:22:31 GMT</pubDate>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Silverlight синхронный вызов WCF</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4596890.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4596890.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4596890.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4596890</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4596890.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4596890</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Привет all. &lt;br /&gt;
Столкнулся со странной необходимостью синхронно обрабатывать запросы к WCF службе из Silverlight. Задача стояла в параллельном выполнении одинаковых команд при формировании и визуализации некоторой иерархической структуры. На простеньком примере без вызовов WCF параллельная обработка запросом меня полностью устраивает.  Вот пример, где на узлах дерева TreeView в параллеьных потоках формируется вложенные узлы.  &lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&amp;lt;StackPanel &amp;gt;
&amp;lt;control:TreeView x:Name=&lt;span class='str'&gt;"RightTreeView"&lt;/span&gt; HorizontalAlignment=&lt;span class='str'&gt;"Left"&lt;/span&gt;
Background=&lt;span class='str'&gt;"Beige"&lt;/span&gt; Padding=&lt;span class='str'&gt;"0"&lt;/span&gt; DataContext=&lt;span class='str'&gt;"{Binding}"&lt;/span&gt;   SelectedItemChanged=&lt;span class='str'&gt;"RightTreeView_SelectedItemChanged"&lt;/span&gt; /&amp;gt;            
&amp;lt;/StackPanel&amp;gt;

&lt;span class='kw'&gt;public&lt;/span&gt; SilverlightControl()
{
  InitializeComponent();

  root = &lt;span class='kw'&gt;new&lt;/span&gt; CCategory(0, &lt;span class='str'&gt;"root"&lt;/span&gt;);
  CCategory.AddOneTreeItem(RightTreeView.Items, root);
}

&lt;span class='kw'&gt;private void&lt;/span&gt; RightTreeView_SelectedItemChanged(&lt;span class='kw'&gt;object&lt;/span&gt; sender, RoutedPropertyChangedEventArgs&amp;lt;&lt;span class='kw'&gt;object&lt;/span&gt;&amp;gt; e)
    {
      &lt;span class='kw'&gt;if&lt;/span&gt; (e.NewValue &lt;span class='kw'&gt;is&lt;/span&gt; TreeViewItem)
      {
        TreeViewItem sel = (e.NewValue &lt;span class='kw'&gt;as&lt;/span&gt; TreeViewItem);
        &lt;span class='kw'&gt;if&lt;/span&gt; (sel.DataContext != &lt;span class='kw'&gt;null&lt;/span&gt;)
        {
          CCategory selCat = (sel.DataContext &lt;span class='kw'&gt;as&lt;/span&gt; CCategory);
          &lt;span class='kw'&gt;if&lt;/span&gt; (!selCat.Loading)
          {
            selCat.Loading = &lt;span class='kw'&gt;true&lt;/span&gt;;
            sel.IsExpanded = &lt;span class='kw'&gt;true&lt;/span&gt;;
            ThreadPool.QueueUserWorkItem(AddCategoryItems,  &lt;span class='kw'&gt;new&lt;/span&gt; ThreadArgs1( sel, selCat));
          }
        }
      }
    }
&lt;span class='com'&gt;// Добавляем узлы асинхронно&lt;/span&gt;
&lt;span class='kw'&gt;private void&lt;/span&gt; AddCategoryItems(&lt;span class='kw'&gt;object&lt;/span&gt; stateInfo)
    {
      ThreadArgs1 arg = (ThreadArgs1)stateInfo;
      &lt;span class='com'&gt;// Не могу синхронно обратиться к WCF с запросом и тут же
      // получить синхронно ответ в виде List&amp;lt;CCategory&amp;gt;
      // Если бы вызовы выполнялись синхронно :( Do…Async() и Do…Completed()&lt;/span&gt;

      &lt;span class='kw'&gt;for&lt;/span&gt; (&lt;span class='kw'&gt;int&lt;/span&gt; i = 0; i &amp;lt; 5; i++)
      {
        Thread.Sleep(300);
        CCategory newcat = &lt;span class='kw'&gt;new&lt;/span&gt; CCategory(arg.cat.CatID * 10 + 1, arg.cat.CatName + i.ToString());
        RightTreeView.Dispatcher.BeginInvoke(&lt;span class='kw'&gt;delegate&lt;/span&gt;()
        {
          CCategory.AddOneTreeItem(arg.item.Items, newcat);
        });
      }
    }

&lt;span class='com'&gt;// Класс для передачи параметров в параллельный поток&lt;/span&gt;
&lt;span class='kw'&gt;public class&lt;/span&gt; ThreadArgs1
  {
    &lt;span class='kw'&gt;public&lt;/span&gt; TreeViewItem item;
    &lt;span class='kw'&gt;public&lt;/span&gt; CCategory cat;
    &lt;span class='kw'&gt;public&lt;/span&gt; ThreadArgs1(TreeViewItem item, CCategory cat)
    {
      &lt;span class='kw'&gt;this&lt;/span&gt;.item = item;
      &lt;span class='kw'&gt;this&lt;/span&gt;.cat = cat;
    }
  }
&lt;span class='com'&gt;// Класс для DataContext  в узлах TreeViewItem&lt;/span&gt;
  &lt;span class='kw'&gt;public class&lt;/span&gt; CCategory
  {
    &lt;span class='kw'&gt;public bool&lt;/span&gt; Loading = &lt;span class='kw'&gt;false&lt;/span&gt;;
    &lt;span class='kw'&gt;public string&lt;/span&gt; CatName { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }
    &lt;span class='kw'&gt;public int&lt;/span&gt; CatID { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }
    &lt;span class='kw'&gt;public&lt;/span&gt; CCategory()
    {
      Loading = &lt;span class='kw'&gt;false&lt;/span&gt;;
      CatName = &lt;span class='str'&gt;""&lt;/span&gt;;
      CatID = 0;
    }
    &lt;span class='kw'&gt;public&lt;/span&gt; CCategory(&lt;span class='kw'&gt;int&lt;/span&gt; n, &lt;span class='kw'&gt;string&lt;/span&gt; s)
    {
      Loading = &lt;span class='kw'&gt;false&lt;/span&gt;;
      CatName = s;
      CatID = n;
    }
    &lt;span class='com'&gt;// Добавление одного узла&lt;/span&gt;
    &lt;span class='kw'&gt;public static void&lt;/span&gt; AddOneTreeItem(ItemCollection itemColl, CCategory dataNode)
    {
      TreeViewItem tvi = &lt;span class='kw'&gt;new&lt;/span&gt; TreeViewItem();
      itemColl.Add(tvi);
      tvi.DataContext = dataNode;
      tvi.Header = &lt;span class='kw'&gt;new&lt;/span&gt; TreeViewCategoryNode();
    }
  }
&lt;span class='com'&gt;//Ну и биндинг через пользовательский контрол&lt;/span&gt;
&amp;lt;UserControl x:Class=&lt;span class='str'&gt;"....TreeViewTemplate.TreeViewCategoryNode"&lt;/span&gt;
...&amp;gt;
&amp;lt;Grid x:Name=&lt;span class='str'&gt;"LayoutRoot"&lt;/span&gt; Background=&lt;span class='str'&gt;"Bisque"&lt;/span&gt; Height=&lt;span class='str'&gt;"20"&lt;/span&gt;&amp;gt;
&amp;lt;Border BorderBrush=&lt;span class='str'&gt;"Black"&lt;/span&gt; BorderThickness=&lt;span class='str'&gt;"0"&lt;/span&gt;&amp;gt;
    &amp;lt;StackPanel Orientation=&lt;span class='str'&gt;"Horizontal"&lt;/span&gt;&amp;gt;
        &amp;lt;TextBlock Text=&lt;span class='str'&gt;"{Binding CatName}"&lt;/span&gt; Margin=&lt;span class='str'&gt;"0"&lt;/span&gt; /&amp;gt;

    &amp;lt;/StackPanel&amp;gt;
&amp;lt;/Border&amp;gt;
&amp;lt;/Grid&amp;gt;
&amp;lt;/UserControl&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Но с добавлением вызовов Do…Async() и Do…Completed() возникает проблема. Я не могу вызвать их синхронно в новом потоке, хотя именно такое решение напрашивается. Если не создавать отдельный поток и просто вызывать Do…Async() и обрабатывать результаты в Do…Completed() получается не очень хорошо.&lt;br /&gt;
1) Можно ли узнать какие параметры передавались в Do…Async() изнутри Do…Completed(?. Как решить к какому Do…Async() относится вызов Do…Completed(), ведь запросов может быть послано несколько с разными параметрами и не факт что ответ будет в той же последовательности. Нам нужно знать к какому узлу дерева добавлять пришедшие в Do…Completed() данные. Получается пока, что по самим данным нужно определять в какой узел их добавлять рекурсивно сканируя все дерево в поисках нужного узла. При условии что в полученных данных эта информация есть, что не факт.&lt;br /&gt;
2) Невозможна параллельная работа нескольких запросов. Обработчик события один, потому не всегда ясно для какого Do…Async() и каких параметров сработало событие. Нужно ждать пока не вернется первый запрос перед запуском следующего? Можно через лямбда замыкание подписать анонимный метод на событие, но потом ведь нужно отписываться от события. Как отписать анонимный метод или пусть себе висят на событии? Кроме того, если подписано несколько обработчиков то они сработают сразу все вместе? &lt;br /&gt;
&lt;br /&gt;
Получается, что если бы вызов в процедуре AddCategoryItems я вызывал Do…Async() и Do…Completed() синхронно, то это был бы самый удобный вариант. И параметры передаваемые в одельный потом на месте и обработка полученных данных будет зависеть от параметров вызова.&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;private void&lt;/span&gt; AddCategoryItems(&lt;span class='kw'&gt;object&lt;/span&gt; stateInfo)
    {
      ThreadArgs1 arg = (ThreadArgs1)stateInfo;
      Do…Async(arg.CatID);
     
      &lt;span class='com'&gt;// List&amp;lt;CCategory&amp;gt; list= Do…Completed(); // ну как-то так&lt;/span&gt;

      &lt;span class='kw'&gt;foreach&lt;/span&gt; (CCategory c &lt;span class='kw'&gt;in&lt;/span&gt; list)
      {
        RightTreeView.Dispatcher.BeginInvoke(&lt;span class='kw'&gt;delegate&lt;/span&gt;()
        {
          CCategory.AddOneTreeItem(arg.item.Items, c);
        });
      }
    }&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Чувствую недостаток идей, направьте в нужную сторону.&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Tue, 31 Jan 2012 07:03:39 GMT</pubDate>
		
			<author>Vaako &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Как в WPF получить Bitmap из Visual?</title>
		<link>http://www.rsdn.ru/Forum/dotnet.gui/4595612.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/dotnet.gui/4595612.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/dotnet.gui/4595612.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4595612</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4595612.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4595612</trackback:ping>
		<description>
			
					&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Привет!&lt;br /&gt;
Что нужно сделать чтобы в WPF получить Bitmap из Visual?&lt;br /&gt;
Использовал RenderTargetBitmap, но после отрисовки полученного растра он оказывался смещенным, &lt;br /&gt;
хотя я рисовал его в точке(0,0). &lt;br /&gt;
Пытался преобразовать строку символов из FormattedText в растр и вывести его в WriteableBitmap(используя WriteableBitmapEx через Blit..).&lt;/div&gt;
				
		</description>
		
		<category>dotnet</category><category>gui</category>
		<pubDate>Mon, 30 Jan 2012 11:28:02 GMT</pubDate>
		
		
			<slash:comments>4</slash:comments>
		
	</item>
</channel>
</rss>

