我原本被要求制作一个控制器,其儿童控件垂直堆叠,并且可以装入放置它们的容器中,但是在看到这个设计之后我被要求让它们水平堆叠,如果纵横比是又长又瘦。像下图这样的东西;
我尝试了各种不同的容器,但从来没有完全得到我想要的东西。我得到的最接近的是使用一个包装面板,问题是控件的三个不同部分不会伸展以适应父容器。我得到的效果更接近于此;
我用这样的东西得到了这个。
<WrapPanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Textbox/>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Textbox/>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Textbox/>
</Grid>
</WrapPanel>
正如您所看到的,我无法获得控件来填充容器。有没有办法实现这个目标?
答案 0 :(得分:0)
看看这个基本的wpf容器: http://www.dotnetfunda.com/articles/show/900/wpf-tutorial-layout-panels-containers-layout-transformation-2
您可以使用UniformGrid,并将Rows
或1
属性设置为<UniformGrid x:Name="uniformGrid" Columns="1">
<Border Background="Red" />
<Border Background="Green" />
<Border Background="Blue" />
</UniformGrid>
<UniformGrid x:Name="uniformGrid" Rows="1">
<Border Background="Red" />
<Border Background="Green" />
<Border Background="Blue" />
</UniformGrid>
:
0
要切换方向,只需将其中一个属性重置为1
,将另一个属性设置为if (uniformGrid.Rows == 0)
{
uniformGrid.Rows = 1;
uniformGrid.Columns = 0;
}
else
{
uniformGrid.Rows = 0;
uniformGrid.Columns = 1;
}
:
public ActionResult SyncfusionChart()
{
List<ChartData> data = new List<ChartData>();
data.Add(new ChartData("Jan", 35, 1));
data.Add(new ChartData("Feb", 28, 2));
data.Add(new ChartData("Mar", 34, 3));
data.Add(new ChartData("Apr", 32, 4));
data.Add(new ChartData("May", 40, 5));
data.Add(new ChartData("Jun", 32, 6));
data.Add(new ChartData("Jul", 35, 7));
data.Add(new ChartData("Aug", 55, 8));
data.Add(new ChartData("Sep", 38, 9));
data.Add(new ChartData("Oct", 30, 10));
data.Add(new ChartData("Nov", 25, 11));
data.Add(new ChartData("Dec", 32, 12));
}
public class ChartData
{
public string Month;
public double Sales;
public int id;
public ChartData(string month, double sales, int id)
{
this.Month = month;
this.Sales = sales;
this.id = id;
}
}