尽管我没有要求在此代码上提供代码,但我想做的是制作一个面板,该面板允许我将名为 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);
}
有人可以引导我朝着正确的方向前进吗?