Хотя я не прошу ввести код на этом, я хочу сделать панель, которая позволяет мне установить свойство Weight в дочерний элемент свойства. Идея состоит в том, что я хочу, чтобы StackPanel с горизонтальным выравниванием, что каждый дочерний элемент имеет вес. Я хочу захватить мои панели желаемой ширины (ширины экрана), а затем дать каждому ребенку ширину, которая им нужна. так, например,Как сделать взвешенную панель
сказать, что у меня есть эта WeightPanel, в которой есть 14 кнопок. Моя ширина экрана 480. Кнопка 1 имеет вес 2 кнопки 2 имеет вес 1 ... Кнопка 13 имеет вес 1 Кнопка 14 имеет вес 1,5
Если каждая кнопка имела вес 1, тогда все они получат 34,2 для ширины. Но в этом случае у меня есть кнопка с весом 2, а другая с весом 1,5. Таким образом, кнопка 1 теперь получит ширину 68,4, а кнопка 14 будет иметь ширину 51,4. Поэтому я бы пересчитал, что 1 должен быть 480 - (68,4 + 51,4) = 360,2/12 = 30.
Так что кнопки с 2 по 13 будут иметь ширину 30, а остальные 2 уже будут иметь ширину. У меня есть основа для создания настраиваемой панели. Единственный бит кода, который мне нужен, так что я могу пойти что-то вроде этого
<k:WeightedPanel>
<Button k:WeightedPanel.Weight="2" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1" Content="A" />
<Button k:WeightedPanel.Weight="1.5" Content="A" />
</k:WeightedPanel>
все математики и макета вещи я разберусь. Я нашел один пример в CodePlex, когда человек смог создать свойство зависимостей, но я не знал бы, как его получить. например
List<double> weights = new List<double>();
foreach (UIElement child in this.Children)
{
weights.Add(child.Weight);
}
Может ли кто-нибудь угодить мне в правильном направлении?
Большое спасибо за указание мне вложенное свойство я понятия не имел, что она была вызвана. Я хочу что-то немного более чистое, чем сетка, о которой вы говорите, потому что я * стараюсь * сделать OSK –