« first day (1044 days earlier)      last day (1987 days later) » 

4:49 AM
@Uranus блин, через стиль я знаю как сделать. Я же из за этого и уточнил, что не хочу лезть в стиль.
 
5:13 AM
ammyui.com Кто-нибудь сталкивался?
 
5:45 AM
@Bretbas это никому не нужно
У @Athari было что-то подобное, вроде
Можешь посчитать там комментарии, почему это не нужно
 
6:03 AM
<TreeView ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}"/>
                <CheckBox IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TreeViewItem}, Path=IsExpanded}"/>
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>
 
@АндрейNOP Блин. Делал абсолютно тоже самое!
@АндрейNOP, и нифига у меня не выходило
 
@Bretbas значит не тоже самое ¯\_(ツ)_/¯
 
@АндрейNOP Видимо да:( Печаль какая-то. Пришлось по другому все сделать
 
@Bretbas никогда не поздно всё переделать заново :)
 
@АндрейNOP да тогда я на долго зависну. Я уже долго делаю:(
@АндрейNOP, потом если только
 
 
1 hour later…
7:11 AM
@АндрейNOP, ты тут?:)
 
7:21 AM
@АндрейNOP, смотри. У меня есть вот это:
 
@Bretbas ?
 
@АндрейNOP, Смотри. Оранжевым обведен UserControl, который называется ProductsContent. Внутри этого контрола, как ты видишь, имеется красная полоска. Эта красная полоска, будущая панель всякой хрени(хлебных крошек, результатов выдачи и тд). Также, на этой красной полоске имеется кнопка - раскрытия фильтра. Фильтр - это другой UserControl - FilterPanelVM.
Сейчас покажу. Подожди
Так, я на 5 минут отойду.
@АндрейNOP, итак я тут
на втором скриншоте, как ты видишь, когда я нажимаю на кнопку Фильтр на красной полоске, то у меня анимационно выдвигается панель с фильтрацией товаров. Суть в том, что полоска вместе с этой хурмой тоже выдвигается ниже.
@АндрейNOP, FilterPanel - это как раз и есть контрол фильтрации. Он обведен синим на скрине. Он состоит из двух UserControl'ов - CategoryFilter и AttributeFilter.
@АндрейNOP, вот как выглядит код всего фильтра, который находится, как я уже сказал в ProductsContent контроле
<!-- The product filter -->
<StackPanel VerticalAlignment="Top"
			Panel.ZIndex="1">
	<local:FilterPanel x:Name="filterPanel"
						   local:AnimateSlideTopBottomProperty.Value="{Binding DataContext.IsFilterShown, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"
						   DataContext="{Binding FilterPanelVM}"/>

	<!-- Красная полоска -->
	<Border local:AnimateSlideTopBottomProperty.Value="{Binding IsFilterShown}"
			local:AnimateSlideTopBottomProperty.Offset="{Binding ActualHeight, ElementName=filterPanel}"
@АндрейNOP, итак, теперь собственно вопросы
Смотри. У каждого типа фильтра, который находится в FilterPanel - CategoryFilter или AttributeFilter, имеется кнопка включения/выключения, с правой стороны вверху, напротив названия фильтра. Когда я жму по ней, то фильтр включается, и раскрывается
Смотри что происходит когда он раскрывается:
Полоска моя уезжает вниз за окно! Я хочу сделать так, чтобы если фильтр был раскрыт на столько, что не помещается в окно, то появлялись ScrollViewer'ы, и я мог уже по фильтру ходить через ScrollViewer. Главной чтобы максимальная позиция красной полоски была внизу окна. И не уезжала за него!. Как сделать, я не могу понять....
local:AnimateSlideTopBottomProperty.Value и local:AnimateSlideTopBottomProperty.Offset это я написал аттач проперти.
первое аттач проперти просто изменяет анимационно значение у элемента Margin на величину равное ActualHeight этого элемента
Если второе аттач проперти ЗАДАНО, то первое аттач проперти также анимационно изменяет значение Margin, но на величину, заданную во втором атаач проперти Offset
 
7:54 AM
Надо Grid
Красную полосу кладешь в отдельную строку в нем
А фильтры в другую, тело фильтра в ScrollVewer
Тогда не должно уходить за пределы окна
 
@АндрейNOP, тоесть не StackPanel? У меня как ты видишь в StackPanel'е сейчас находятся и фильтр и красная полоска
 
@Bretbas ага, StackPanel как раз уходит за пределы
 
@АндрейNOP, ща попробую
 
4
Q: Возможно ли такое расположение в панели?

RusArtЕсть форма, под ней кнопки (ОК, Отмена). Хочу добиться следующего поведения: если форма маленькая и умещается в родительской панели, кнопки должны быть сразу после формы. Если форма большая и не умещается в родительской панели, появляется ScrollBar только на форму, кнопки видны вне формы внизу. П...

Примерно как здесь ^^ @Bretbas
 
@АндрейNOP, все.
Получилось. Внатуре я тупанул
 
8:01 AM
@Bretbas получилось?
Гуд
 
теперь нужно сделать, чтобы у каждого фильтра был свой ScrollViewer
блин, и на самом деле, я не могу понять, как мне сделать панель:(
@АндрейNOP, я туплю
@АндрейNOP, мне нужна панель, похожая на UniformGrid, ну или WrapPanel. Но чтобы обязательно все столбцы были выровнены
 
Выровнены куда?
 
UniformGrid делает так, чтобы столбцы были выровнены. Но он почему то делает так, что все строки имеют одинаковую высоту
 
@Bretbas ага, там все ячейки одинакового размера
 
@АндрейNOP, вот видишь что эта зараза мне делает:)
 
8:05 AM
@Bretbas а надо как? Эскиз сделай
 
@АндрейNOP, да зачем эскиз. Все просто я хоч
 
Ну а WrapPanel чем не устраивает?
 
я хочу чтобы каждая строка имело высоту максимальную СВОЕМУ столбцу
@АндрейNOP, вот как я хочу
 
Ну это, вроде, стандартное поведение в WrapPanel, не?
 
тоесть каждая строка имеет свою высоту, в зависимости от максимального размера ячейки, находящихся в нем
@АндрейNOP, ща покажу что у меня WrapPanel творит
 
8:11 AM
Фиксированную ширину только надо, походу
 
@АндрейNOP, да, только она должна вычисляться автоматически
@АндрейNOP, в зависимости от максимальной ширины ячейки СТОЛБЦА
 
Придётся писать код
 
тоесть каждый столбец, пускай - может иметь разную ширину
но главное чтобы эти ячейки внутри одного столбца были выровнены
UniformGrid это делает. Но он делает высоту строк равную у всех ячеек - а это мне не надо
 
@Bretbas, может быть обычный Grid подойдёт? Но придётся писать конвертер для Grid.Row/Grid.Column
 
@АндрейNOP в плане конвертер. Что он будет конвертировать?
 
8:16 AM
@Bretbas по элементу определять в какую строку/столбец грида надо его поместить
 
@АндрейNOP, так неизвестно же заранее количество строк и столбцов. Или придется их генерировать самому?
 
@Bretbas эээ, а UniformGrid сам вычисляет сколько надо столбцов?
 
@АндрейNOP, а он у меня как панель используется в TreeView.ItemsPanel
там TreeView по всей видимости все делает
 
@Bretbas я понял, но ты у него Columns не устанавливаешь?
В общем остаётся только писать свою панель
 
@АндрейNOP, ну я ставил. Но хотелось бы не ставить. Хотелось бы, чтобы он сам высчитывал количество колонок на основе ширины окна. Как WrapPanel
@АндрейNOP, а то ставишь Columns=5, потом начинаешь по ширине уменьшать окно, контент в колонках сужается до минимума
а у WrapPanel переезжает вниз на строку
 
8:46 AM
@АндрейNOP, блин, почему у этого WrapPanel'а, в моем AttributeFilter не появляется ScrollViewer?
<WrapPanel ScrollViewer.VerticalScrollBarVisibility="Visible" Orientation="Horizontal"/>
<ItemsControl ItemsSource="{Binding Attributes}">
	<ItemsControl.ItemsPanel>
			<ItemsPanelTemplate>
				<WrapPanel ScrollViewer.VerticalScrollBarVisibility="Visible"
						   Orientation="Horizontal"/>
			</ItemsPanelTemplate>
	</ItemsControl.ItemsPanel>

	<ItemsControl.ItemTemplate>
		<DataTemplate>
			<Grid Margin="10">
				<Grid.RowDefinitions>
					<RowDefinition Height="Auto"/>
					<RowDefinition Height="*"/>
				</Grid.RowDefinitions>

				<!-- The switcher -->
				<RadioButton Grid.Row="0"
@АндрейNOP, вот набор атрибутов, которые выводятся, и которые должны иметь ScrollViewer
 
@Bretbas надо наверное сам ItemsControl класть в ScrollViewer, а не у WrapPanel его включать
 
@АндрейNOP, да уже пробовал
 
9:09 AM
@АндрейNOP, он даже не хочет появляться если я прям на самом верхнем уровне ScrollViewer кладу, сразу же после UserControl - AttributeFilter
 
9:22 AM
@Bretbas а если как-то:
 
@АндрейNOP стоп
я помоему понял в чем дело
 
<ItemsPanelTemplate>
    <ScrollViewer>
        <WrapPanel Orientation="Horizontal"/>
    </ScrollViewer>
</ItemsPanelTemplate>
 
но не могу решить никак
не, так тоже не работает:(
я уже пробовал
но я понял из за чего не работает
смотри. У меня есть UserControl - FilterSwitcher
он выглядит вот так:
<ControlTemplate TargetType="{x:Type UserControl}">
	<Grid>
		<Grid.RowDefinitions>
			<RowDefinition Height="Auto"/>
			<RowDefinition Height="*"/>
		</Grid.RowDefinitions>

		<!-- The switcher -->
		<ToggleButton x:Name="switcher"
					  Grid.Row="0"
					  Style="{StaticResource RegularToggleButtonStyle}"
					  IsChecked="{Binding IsExpanded, ElementName=filterSwitcher, Mode=TwoWay}"
					  HorizontalAlignment="Right"/>

		<!-- The expanded area -->
		<Expander Grid.Row="1"
				  Style="{StaticResource AnimatedExpanderStyle}"
 
1 min ago, by Андрей NOP
<ItemsPanelTemplate>
    <ScrollViewer>
        <WrapPanel Orientation="Horizontal"/>
    </ScrollViewer>
</ItemsPanelTemplate>
 
@АндрейNOP Да я пробовал как ты написал. Такк тоже не работает
итак, использую я FilterSwitcher примерно так:
<!-- The filter -->
<local:FilterSwitcher Grid.Column="1" IsExpanded="{Binding IsEnabled, Mode=TwoWay}">
<!-- Вот тут контент, который нужно ScrollViewer'ом перемещать -->
</local:FilterSwitcher>
У FilterSwitcher'а, как ты увидел есть вот это:
<Expander Grid.Row="1"
		  Style="{StaticResource AnimatedExpanderStyle}"
		  IsExpanded="{Binding IsChecked, ElementName=switcher}"
		  HorizontalAlignment="Right" VerticalAlignment="Top">
	<ContentPresenter/>
</Expander>
 
9:27 AM
ContentPresenter обернуть в ScrollViewer?
 
да
 
ну дык
 
Но так тоже не получается
скорее всего дело в стиле экспандера
Style="{StaticResource AnimatedExpanderStyle}"
это анимированный стиль. Щас покажу что он делает
<ControlTemplate TargetType="{x:Type Expander}">

	<!-- The expand area -->
	<ScrollViewer x:Name="ExpandArea" VerticalScrollBarVisibility="Hidden">

		<!-- Changes this double value for expand/reduce the expand area
			 0.0 - full reduce; 1.0 - full expand -->
		<ScrollViewer.Tag>
			<system:Double>0.0</system:Double>
		</ScrollViewer.Tag>

		<ScrollViewer.Height>
			<MultiBinding Converter="{bts:MultiplyConverter}">
				<Binding Path="ActualHeight" ElementName="ExpandedContent"/>
				<Binding Path="Tag" RelativeSource="{RelativeSource Self}"/>
Вот его Template. Там есть ScrollViewer, у которого установлено свойство Tag в ноль вначале. И также я установил конвертер на высоту ScrollViewer'а. Этот конвертер является мультиконвертером и принимает текущее значение Tag и реальную высоту внутреннего контента ScrollViewer'а
Итак, в этом конвертере я просто умножаю реальную высоту внутреннего контента на значение Tag моего ScrollViewer'а. Все.
А потом просто анимирую значение Tag простым DoubleAnimation от 0 до 1 и обратно
И это Template экспандера
<Expander Grid.Row="1"
		  Style="{StaticResource AnimatedExpanderStyle}"
		  IsExpanded="{Binding IsChecked, ElementName=switcher}"
		  HorizontalAlignment="Right" VerticalAlignment="Top">
	<ContentPresenter/>
</Expander>
@АндрейNOP, мне кажется из-за этого не получается
@АндрейNOP, да, это из за этого. Я сейчас попробовал вот так сделать:
<Expander Grid.Row="1"
		  Style="{StaticResource AnimatedExpanderStyle}"
		  IsExpanded="{Binding IsChecked, ElementName=switcher}"
		  HorizontalAlignment="Right" VerticalAlignment="Top">
	<ScrollViewer Height="300" VerticalScrollBarVisibility="Visible">
		<ContentPresenter/>
	</ScrollViewer>
</Expander>
и скролл появился. Но это не пойдет, так как я здесь явно установил высоту, какая будет
а мне нужно, чтобы Scroll появлялся только когда фильтр полностью перекроет весь экран(красная полоска в самом низу)
Тоесть опять же. Я не знаю реальную высоту, какая будет у скролла
 
10:10 AM
@АндрейNOP, короче думал, думал. Так и не понял, как мне узнать высоту скрола чтобы установить:( Печаль какая то
 
10:42 AM
@Bretbas, попробовал написать панель какая тебе нужна:
    public class AutoLineFeelGrid : Panel
    {
        protected override Size MeasureOverride(Size availableSize)
        {
            foreach (var child in Children.OfType<UIElement>())
                child.Measure(availableSize);
            return new Size();
        }

        protected override Size ArrangeOverride(Size finalSize)
        {
            var children = Children.OfType<UIElement>().ToList();
            int columns;
            for (columns = children.Count; columns > 1; --columns)
Самая примитивная, конечно, но уже работает
(код при желании можно оптимизировать)
 
10:58 AM
@АндрейNOP, у нас обед. Я пока ушел. Приду скоро
 
 
2 hours later…
12:45 PM
@АндрейNOP, че то не могу понять. Это что у тебя за такая выборка:
`Select((e, i) => (size: e.DesiredSize, column: i % columns))`
это из нового стандарта чтоли? У меня это не работает. Это что за лямбда такая?
Это кортеж чтоли?
у меня не фачит он. У меня 461
net framework
Заметил на обычный кортеж Tuple<T1, T2>
 
1:12 PM
@АндрейNOP, че то вообще не отображаются у меня теперь checkBox'ы мои:(
<TreeView ItemsSource="{Binding Categories}">

	<TreeView.ItemsPanel>
		<ItemsPanelTemplate>
			<local:AutoLineFeelGrid/>
			<!--	<UniformGrid Columns="4"/> -->
		</ItemsPanelTemplate>
	</TreeView.ItemsPanel>

	<TreeView.ItemTemplate>
		<HierarchicalDataTemplate DataType="{x:Type local:CheckableCategoryVM}"
								  ItemsSource="{Binding Children}">
			<CheckBox IsChecked="{Binding IsChecked}" Content="{Binding Name}"/>
		</HierarchicalDataTemplate>
	</TreeView.ItemTemplate>
</TreeView>
 
1:26 PM
@АндрейNOP, если просто использовать панель, то она работает. В принципе то что нужно. Но если ее внутри ItemsPanelTemplate у TreeView указать, то ничего не показывает
 
@Bretbas это странно, надо отлаживать значит
@Bretbas да, кортеж
можно заменить на анонимный класс
 
@АндрейNOP да я уже поменял на кортеж
Select((e, i) => new Tuple<Size, int>(e.DesiredSize, i % columns))
 
Select((e, i) => new { size = e.DesiredSize, column = i % columns })
примерно так ^^
 
@АндрейNOP, блин, нервоз. Панель в принципе работает как надо. Но чтобы разобраться, что ты там написал, это нужно время:( А мне нужно быстрее двигаться дальше, чтобы хоть какой-то результат уже показать
а то я сижу уже недели три над программой, а результатов ноль пока
 
@Bretbas заработала в ItemsPanelTemplate?
 
1:30 PM
@АндрейNOP неа
 
AutoLineFeedGrid, кстати, переименуй, там опечатка :)
@Bretbas позже попробую починить
 
может IsItemsHost=true нужно установить явно в template?
 
@Bretbas попробуй,но обычно не влияло
Там еще зависит от того, какие размеры запрашивает TreeViewItem
@Bretbas да там не сложно, алгоритм в общем такой: подбираем максимальное число столбцов, которое может быть
 
@АндрейNOP Да я разберусь:
не говори:)
 
потом просто для каждой строки и столбца выбираем наибольшую высоту элемента
@Bretbas ок и т.д.
если с Linq переписать на обычные циклы, можно оптимизировать, здесь пока куча проходов лишних :)
 
1:34 PM
@АндрейNOP, блин, этот TreeView у меня находится тоже в FilterSwitcher. Может он из за этого не правильно выводит?
@АндрейNOP, там опять этот экспандер и все такое
 
@Bretbas поставь брейкпоинты в методах панели, посмотри какие размеры ей контейнер передает
 
там я видел от 1500 до 1800
от
1500 до 300
13 элементов
 
В MeasureOverride может надо что другое возвращать
 
@АндрейNOP, блин, это внатуре из за FilterSwitcher моего:( нервоз какой то
блин, и все равно там косяк какой-то
ща приду. У нас проверка
 
2:06 PM
@АндрейNOP, блин, какая то хрень
@АндрейNOP, когда я явно высоту TreeView устанавливаю, тогда все пункты вижу. Но если их раскрою все, то они уходят за пределы, и я не могу их увидеть, как на скрине
@АндрейNOP, почему он не увеличивает размер компоновки в зависимости от всех элементов, находящихся в нем?
 
2:49 PM
@АндрейNOP, вообщем у меня получилось знаешь как?
 
@Bretbas ?
Ну панель нуждается в доработке пока, думаю
 
@АндрейNOP, у тебя в методе MeasureOverride возвращается Size(0,0), из за этого он не может понять реальный размер панели. А чтобы его узнать, нужно сделать почти тоже самое что и в Averrage
protected override Size MeasureOverride(Size availableSize)
{
	foreach (var child in Children.OfType<UIElement>())
		child.Measure(availableSize);

	var children = Children.OfType<UIElement>().ToList();
	int columns;
	for (columns = children.Count; columns > 1; --columns)
	{
		var maxWidth = children.Select((e, i) => new Tuple<Size, int>(e.DesiredSize, i % columns))
							   .GroupBy(t => t.Item2, t => t.Item1.Width)
							   .Sum(g => g.Max());
		if (maxWidth <= availableSize.Width) break;
	}
 
@Bretbas ага, я тоже думал об этом
А если просто availableSize возвращать?
 
@АндрейNOP, нельзя
@АндрейNOP, я пробовал. Так как там Height бесконечность. А это нельзя помоему при в методе MeasureOverride возвращать
 
@Bretbas а, ну да, бесконечность нельзя
 
3:00 PM
@АндрейNOP, пришлось почитать уже за это :-D
 
@Bretbas ну я когда ещё предлагал тебе почитать :)
 
@АндрейNOP, вот уже результаты есть хоть какие то
более менее хоть красиво стало е мое
а то было просто ппц какой-то
 
@Bretbas ага, по моему – отлично получается
Надо в панель DP Orientation добавить
 
@АндрейNOP, теперь осталось сделать две вещи:
1. Заставить мой FilterSwitcher работать правильно. Он че делает: когда я раскрываю TreeViewItem, то он увеличивает соответственно панель фильтра. Но когда я сворачиваю назад TreeViewItem, то он не уменьшает размер!
2. Как то придумать для каждого FilterSwitcher'а свой ScrollViewer, у меня так и не получилось. Сделал ттолько общий скролл...
 
@Bretbas в разные Grid.Row надо эти фильтры
 
3:06 PM
@АндрейNOP У меня в разных
Ща покажу что делает он
Вот смотри. Я раскрываю фильтр атрибутов. Вначале размер позволяет уложить все в окно. Потом я беру, и уменьшаю окно, соответственно он не может разместить все в окно, и добавляет скролл. Потом я опять увеличиваю окно в те же размеры, что и до этого
и он, собака, оставляет те же размеры у фильтра, что и у маленького окна
 
Высоту не пересчитывает?
Моя панель должна пересчитывать, дело не в ней
VerticalAlignment=Top попробуй установить
 
@АндрейNOP, на панели?
У меня установлено
@АндрейNOP, нет, это не в твоей панели дело. Это в моем FilterSwitcher'е
 
@Bretbas а из чего он состоит? Почему такое поведение?
 
@АндрейNOP Я же тебе показывал
<Grid>
	<Grid.RowDefinitions>
		<RowDefinition Height="Auto"/>
		<RowDefinition Height="*"/>
	</Grid.RowDefinitions>

	<!-- The switcher -->
	<ToggleButton x:Name="switcher"
				  Grid.Row="0"
				  Style="{StaticResource RegularToggleButtonStyle}"
				  IsChecked="{Binding IsExpanded, ElementName=filterSwitcher, Mode=TwoWay}"
				  HorizontalAlignment="Right"/>

	<!-- The expanded area -->
	<Expander Grid.Row="1"
			  Style="{StaticResource AnimatedExpanderStyle}"
			  IsExpanded="{Binding IsChecked, ElementName=switcher}"
Вот он
Каждый фильтр - CategoryFilter и AttributeFilter я кладу как контент в FilterSwitcher
ВОт этот Expander:
<!-- The expanded area -->
<Expander Grid.Row="1"
Style="{StaticResource AnimatedExpanderStyle}"
IsExpanded="{Binding IsChecked, ElementName=switcher}"
HorizontalAlignment="Right" VerticalAlignment="Top">
 
Это может баг экспандера?
 
3:19 PM
Скорее всего
ща стиль покажу
<ControlTemplate TargetType="{x:Type Expander}">

	<!-- The expand area -->
	<ScrollViewer x:Name="ExpandArea" VerticalScrollBarVisibility="Hidden">

		<!-- Changes this double value for expand/reduce the expand area
			 0.0 - full reduce; 1.0 - full expand -->
		<ScrollViewer.Tag>
			<system:Double>0.0</system:Double>
		</ScrollViewer.Tag>

		<ScrollViewer.Height>
			<MultiBinding Converter="{bts:MultiplyConverter}">
				<Binding Path="ActualHeight" ElementName="ExpandedContent"/>
				<Binding Path="Tag" RelativeSource="{RelativeSource Self}"/>
Вот он, тут че происходит. У меня есть ScrollViewer, я устанавливаю на его высоту мультиконвертер bts:MultiplyConverter. Этот конвертер получает Tag этого ScrollViewer'а и свойство ActualHeight того контента, который находится в ScrollViewer'е, а именно это <Grid x:Name="ExpandedContent" Height="Auto">
В этом конвертере я просто умножаю значение Tag на ActualHeight и возвращаю из конвертера
все в принципе.
я делаю анимацию DoubleAnimation на свойстве Tag
от 0 до 1
 
А зачем Grid там?
 
@АндрейNOP, Ну чтобы удобно было видеть какой контент будет раскрываться:)
@АндрейNOP, так то можно его убрать по идее
 
Попробуй убрать
Может ещё и конвертер неправильный
 
Да конвертер там нет ничего
блин мусора прибегали
@АндрейNOP, шмонали только что:)
	   public override object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) =>
			values.OfType<double>().Aggregate(1.0, (value1, value2) => value1 * value2);
Вот конвертре
 
ActualHeight значит не возвращается?
 
3:33 PM
@АндрейNOP, ну он как бы не обновляет его
оставляет такое же как есть
 
Надо как-то заставить пересчитать высоту
Меня вот грид этот смущает
 
@АндрейNOP она только пересчитывает высоту когда я закрою и открою опять экспандер
@АндрейNOP грид я убрал
тоже самое все
не в нем дело
@АндрейNOP, только что дебажил. Короче он вообще при изменении размеров окна вообще конвертер не срабатывает
конвертер срабатывает только тогда, когда я жму на ToggleButton, тоесть сворачиваю/разворачиваю экспандер
при других манипуляциях конвертер не срабатывает
 
Странно
 
@АндрейNOP, как его научить срабатывать?:)
 
Т.е всё-таки дело в панели моей?
У неё ActualHeight не меняется
 
3:40 PM
@АндрейNOP Блин, нет
@АндрейNOP, у меня такая же фигня была и с wrappanel
и с uniformGrid
@АндрейNOP, вот смотри когда конвертер срабатывает
@АндрейNOP, он срабатывает только когда я экспандер раскрываю/закрываю
в остальных случаях он не срабатывает
а соответственно не пересчитывает его реальную высоту на данный момент времени
пересчитывает только тогда, когда раскрывает/закрывает
 
Ну я понял, почему-то не меняется ActualHeight
Но у какого контрола?
Через Live Visual Tree посмотри
 
неее
если я запущу Live Visual Tree, то у меня комп вообще здохнет
он итак еле еле все везет это
Ну очевидно, что на:
<ContentPresenter x:Name="ExpandedContent"
Height="Auto"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
 
Он и так же запущен
 
@АндрейNOP, нет
Я его отключил
UI Debugger
у меня не везет
2 gb оперативы. 256 видюха, старая очень. сам ноут 2008-2009 года
 
Ок, позже за пк попаду, попробую воспроизвести проблему
Займись пока чем другим :)
 
3:50 PM
@АндрейNOP, да это же очевидно. Он
			<ScrollViewer.Height>
				<MultiBinding Converter="{bts:MultiplyConverter}">
					<Binding Path="ActualHeight" ElementName="ExpandedContent"/>
					<Binding Path="Tag" RelativeSource="{RelativeSource Self}"/>
				</MultiBinding>
			</ScrollViewer.Height>
Это высота ScrollViewer'а. Так?
Когда я меняю размеры окна, то она не пересчитывается, так как на ней висит конвертер
 
@Bretbas не очевидно, он может растягивается под то, что в нем лежит и именно оно не даёт уменьшиться
 
@АндрейNOP Ну он и растягивается
если включить VerticalScrollBarVisibility=Vibible
то это видно
 
Но не уменьшается же?
Что не даёт ему уменьшиться? Баг в нем или в его содержимом?
 
@АндрейNOP ну хорошо. Даже если в нем, то что можно сделать?
Я сделал вроде
вухахаха
@АндрейNOP, я заменил ScrollViewer на StackPanel
И все заработало. Странно ппц
Какой-тто день чудес
@АндрейNOP, может сейчас скролл получиться на фильтрах сделать. Ща попробую:))
@АндрейNOP, ну в любом случае, одной проблемой меньше.
@АндрейNOP, блин. А сколл нифига не появлятся.
Он все хочет, чтобы я ему установил явно MaxHeight
но я не хочу явно, я хочу, чтобы он сам высчитывал это значение, исходя из размера
 
4:06 PM
StackPanel обернуться в ScrollViewer
 
@АндрейNOP, вот смотри что происходит
@АндрейNOP, я хочу чтобы у каждого типа фильтра - CategoryFilter и AttributeFilter был СВОЙ ScrollViewer. И он должен появляться только в том случае, если общий FilterPanel заполнила весь экран(тоесть красная полоска в самом низу)
@АндрейNOP, только я уже сам запутался. Я не пойму. Если даже так получится сделать, то каковы размеры будут у CategoryFilter и AttributeFilter?
одинаковые получается?
Просто в Grid, где они сейчас находятся, высота Row каждого из них равна Auto
 
Надо не Auto, а * наверное
 
@АндрейNOP Я уже пробовал так. Но у меня тогда вообще какая то хрень выходит:)
@АндрейNOP, просто размер AttributeFilter от балды берет и все
и он видно что меньше CategoryFilter
хотя должен быть такой же
поэтому я оставил как Auto
@АндрейNOP, блин на самом деле нужно просто понять что нужно сделать вообще
У меня есть:
CategoryFilter и AttributeFilter. Оба эти UserControl'а находятся в контроле FilterPanel, а именно в Grid, где каждая строка имеет высоту Auto. Почему Auto? Потому что я не хочу, чтобы AttributeFilter и CategoryFilter заполняли весь экран. Я хочу чтобы они заполняли только столько высоты, сколько им нужно для рендеринга
При этом, я хочу, чтобы если эти два контрола все таки заполнял весь экран, то они должны иметь одинаковую высоту, ттоесть получается что Row в гриде уже должны быть равными *
@АндрейNOP, если им нужно еще больше места, то у каждого из эти контролов должны появляться ScrollViewer'ы.
Вот в принципе и все что нужно
@АндрейNOP, я могу написать конечно:
`<ScrollViewer MaxHeight="300"/>`
но это тупо, так как я задаю высоту явно, и она не точная. На всех экранах будет одна и та же. Это нервоз
Хотелось бы, чтобы он сам как нибудь анализировал
 
4:24 PM
@Bretbas уверен, что это возможно?
 
@АндрейNOP Я не знаю:) Ты больше знаешь. Ты как думаешь?:)
 
Если они будут одинаковые по высоте, какому-нибудь может быть слишком много места, не?
 
@АндрейNOP, ты не понял:)
@АндрейNOP, они должны быть одинаковые по высоте только в том случае, если заполнился весь экран
@АндрейNOP, или стой
 
@Bretbas ну да и какому-то может быть много места при этом
 
@АндрейNOP, скорее лучше так сказать:
 
4:27 PM
Один пусть занимает 80% экрана, второй 30%, ты растягиваешь на весь экран и второму тогда слишком много места
 
они должны поделить рабочую область FilterPanel на две равные части только в том случае, если один и второй заполняет ровно или больше половины этой рабочей области. Если больше половины, то должен появляться Scroll
 
Ему надо 30%, а ты даёшь 50% принудительно
 
@АндрейNOP, вот так
@АндрейNOP, не, прочти, что я написал:)
 
Ну это уже такая логика, что только описывать в коде
 
@АндрейNOP думаешь? Стандартными средствами не решить?
 
4:29 PM
Почему просто не сделать чтобы оба фильтра были в одной прокручивающейся области?
@Bretbas ага
 
@АндрейNOP Потому что это не очень красиво:) Чтобы мне фильтр отключить у категорий, мне придется в самый верх листать
А нужно чтобы только контент фильтра прокручивался скроллом
а если так, то должно быть два скролла
на один и на второй фильтр
но тогда они должны как то распределять рабочую область
как распределять, я уже написал:) В принципе так было бы круто
@АндрейNOP, но раз придется это делать ручками, то лучше пусть это подождет до лучших времен:) Оставлю я пока общий скролл
 
Знаешь как сделай
 
?
 
Когда открываешь фильтр, второй пусть закрывается автоматически
 
@АндрейNOP, оо, в принципе можно так сделать
Стоп, ну тогда я не вижу как я фильтрую
я могу же фильтровать товары и по категориям и по атрибутам ОДНОВРЕМЕННО
А значит я не вижу всего сразу
мне придется переключаться туда сюда
 
4:34 PM
Ну тогда оставляй как-нибудь
 
@АндрейNOP Ладно. Это до лучших времен. Внатуре я уже с этим фильтром устал:)
@АндрейNOP, а там еще какую то ошибку опять нашел:(
@АндрейNOP, вру. Все нормально:)
@АндрейNOP, теперь нужно придумать что с этой красной полоской делать. Ты бы не мог посоветовать как красиво было бы?:)

Я вот напрример хочу сделать так, что когда панель закрыта, то там отображаются хлебные крошки, в справа от них, кнопка фильтра. Когда нажимаешь на нее, хлебные крошки изчезают, кнопка фильтра плавно переходит в кнопку ПРИМЕНИТЬ ФИЛЬТР, и раскрывается панель вниз
Как тебе?
 
 
2 hours later…
6:39 PM
@Bretbas пойдет, только самой панели цвет поспокойнее бы
 
@АндрейNOP белый будет
такой же как и FilterPanel
я просто красный сделал, чтобы видно ее было для меня
@АндрейNOP, блин, я вот только не знаю. У меня есть еще SearchBox, вначале я делал так, чтобы когда нажимаешь на SearchBox, то появлялся фильтр как Popup. Но он настолько большой был и не удобный, что я решил разделить SearchBox от FilterPanel. Правильное решение как думаешь?
Ведь SearchBox - это тоже фильтр своего рода. Я могу искать товары по вхождению символов в описание или название товара. Могу искать по артиклу
 
а хз
 

« first day (1044 days earlier)      last day (1987 days later) »